求教这段代码的语法

某某人人 2016-06-30 10:25:26
#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);
}
看不懂构造函数的语法,谁能详细解释下?
...全文
80 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
尚书左仆射 2016-07-01
  • 打赏
  • 举报
回复
声明时: xuStr(const char* cp=""); 构造函数没有返回值,函数名与类名相同。后面形参表中有一个默认值。 定义时: xuStr::xuStr(const char *cp):data(new char[strlen(cp)+1]){ strcpy(data,cp); } 构造函数中用初始化列表(构造函数的特有形式,一般函数是没有的)来初始化data成员,初始化列表要用()来处理,不是=。 首先分配了data的空间,函数体内在具体赋值。
wen_eric 2016-07-01
  • 打赏
  • 举报
回复
xuStr::xuStr(const char *cp):data(new char[strlen(cp)+1]){ strcpy(data,cp); 1、先申请内存,内存大小由cp所指向的字符串加1决定大小,然后将指针data指向改内存。 2、拷贝cp指向的字符串到data所指的内存空间。
小灸舞 2016-07-01
  • 打赏
  • 举报
回复
先给data分配空间,也就是data = new char[strlen(cp)+1];
然后再strcpy赋值,也就是strcpy(data,cp);

64,654

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧