请教这段代码的语法

C++语言 码拜 9年前 (2016-04-06) 1001次浏览
#include <string.h>
using namespace std;
class xuStr
{
private:
char* data;
public:
xuStr(const char* cp=””);
~xuStr(){delete [] data;}
};
xuStr::xuStr(const char *cp):data(new char[strlen(cp)+1]){
strcpy(data,cp);
}
看不懂构造函数的语法,谁能详细解释下?
解决方案

10

先给data分配空间,也就是data = new char[strlen(cp)+1];
然后再strcpy赋值,也就是strcpy(data,cp);

5

xuStr::xuStr(const char *cp):data(new char[strlen(cp)+1]){
strcpy(data,cp);
1、先申请内存,内存大小由cp所指向的字符串加1决定大小,然后将指针data指向改内存。
2、拷贝cp指向的字符串到data所指的内存空间。

10

声明时: xuStr(const char* cp=””);
构造函数没有返回值,函数名与类名相同。后面形参表中有一个默认值。
定义时:
xuStr::xuStr(const char *cp):data(new char[strlen(cp)+1]){
strcpy(data,cp);
}
构造函数中用初始化列表(构造函数的特有形式,一般函数是没有的)来初始化data成员,初始化列表要用()来处理,不是=。
首先分配了data的空间,函数体内在具体赋值。

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明请教这段代码的语法
喜欢 (0)
[1034331897@qq.com]
分享 (0)