关于构造函数中存在字符指针成员变量的赋值问题

云斜月 2014-03-13 10:53:39


class Student{
public:
Student(char *s):str(s){ // 这种写法,有没有问题,
for(int i = 0; i < strlen(s); i++)
cout << str[i];}
Student(int , char *s){ // 还是应该使用这种方法, 程序跑的时候,两个都可以正常运行的。求解答,还有原因。谢谢了
str = new char[strlen(s) +1];
strcpy(str,s);
// cout << *str;
}
private:
char *str;
};
...全文
153 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
buyong 2014-03-14
  • 打赏
  • 举报
回复
第2种,在无参构造函数中初始化str=NULL,在析构中判断并delete str.
Pump天天学习 2014-03-13
  • 打赏
  • 举报
回复
Student(char *s):str(s) 这样的话,str和实参指向的就是同一个位置了,万一实参被delete掉了呢

64,649

社区成员

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

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