c++ string 构造函数原型
时间: 2023-06-08 10:04:26 浏览: 100
C++ 中的 c string 构造函数原型如下:
```cpp
char* strcpy( char* dest, const char* src );
```
该构造函数用于将源字符串 `src` 复制到目标字符串 `dest` 中,并返回目标字符串 `dest` 的首地址。在复制过程中,会将 `src` 中的空字符(`\0`)一并复制到 `dest` 中,保证复制后的字符串以空字符结尾,形成一个以空字符结尾的字符串。
相关问题
string 赋值函数 移动赋值函数 移动构造函数
string 赋值函数用于将一个字符串的值赋给另一个字符串。它的原型是:
```
string& operator=(const string& str);
```
其中,`str` 是要赋值的字符串。这个函数将会复制 `str` 的值到当前字符串对象。
移动赋值函数(Move Assignment Operator)用于将一个字符串的资源(如动态内存)移动给另一个字符串,而不是进行复制。它的原型是:
```
string& operator=(string&& str);
```
其中,`str` 是要移动的字符串。这个函数将会将 `str` 的资源转移给当前字符串对象,并使 `str` 成为空字符串。
移动构造函数(Move Constructor)用于通过移动而不是复制来创建一个新的字符串对象。它的原型是:
```
string(string&& str);
```
其中,`str` 是要移动的字符串。这个函数将会创建一个新的字符串对象,并将 `str` 的资源转移给新对象,同时使 `str` 成为空字符串。
这些函数在 C++ 中的 string 类中是内置的,你可以直接使用它们来进行赋值、移动赋值和移动构造操作。
已知C++string类原型如下 class String { private: char* pStr; public: String(char* p = nullptr); ~String(); String(String& s); String operator+(String& obj); }; 请实现它的成员函数
好的,我来实现一下这个类的成员函数。
```cpp
#include <cstring>
#include <iostream>
using namespace std;
class String {
private:
char* pStr;
public:
String(char* p = nullptr) {
if (p == nullptr) {
pStr = new char[1];
*pStr = '\0';
} else {
int len = strlen(p);
pStr = new char[len + 1];
strcpy(pStr, p);
}
}
~String() {
delete[] pStr;
}
String(String& s) {
int len = strlen(s.pStr);
pStr = new char[len + 1];
strcpy(pStr, s.pStr);
}
String operator+(String& obj) {
int len1 = strlen(pStr);
int len2 = strlen(obj.pStr);
char* tmp = new char[len1 + len2 + 1];
strcpy(tmp, pStr);
strcat(tmp, obj.pStr);
String ret(tmp);
delete[] tmp;
return ret;
}
friend ostream& operator<<(ostream& os, const String& str) {
os << str.pStr;
return os;
}
};
```
在上面的代码中,我们实现了String类的构造函数、析构函数、复制构造函数和"+"运算符的重载函数。其中,构造函数根据传入的字符串长度动态分配内存并进行字符串复制;析构函数释放动态分配的内存;复制构造函数也是根据传入的字符串长度动态分配内存并进行字符串复制;"+"运算符重载函数则是根据两个字符串长度进行动态内存分配,拼接后返回一个新的String对象。另外,我们还定义了一个友元函数重载运算符"<<", 用于输出String类型对象的值。
阅读全文