请教一个复制构造函数的写法
该题目来自C++ Primer
对于如下的类的简单定义,编写一个复制构造函数复制所有成员.复制pstring指向的对象而不是复制指针
- C/C++ code
struct NoName{ NoName():pstring(new std::string),i(0),d(0){}private: std::string *pstring; int i; double d;};参考答案是:
- C/C++ code
NoNoame::NoName(const NoName& Other){ pstring=new std::string; // 这句看不明白,我写的时候没有,可以不要这句吗?具体是什么作用啊 *pstring=*(other.pstring); i=Other.i; d=Other.d;}[解决办法]
C++ 在讲类的拷贝构造函数之前难道不先讲指针吗...
[解决办法]
- C/C++ code
NoNoame::NoName(const NoName& Other){ pstring=new std::string; // 没有这就,那么后面的pstring 指针就会出现悬挂指针,也就说pstring 没有任何的初始化,它并没有指向任何//有效空间,你就做了解释引用操作。这样会报错的。 *pstring=*(other.pstring); i=Other.i; d=Other.d;}
[解决办法]
pstring=new std::string(*(other.pstring));
[解决办法]
深拷贝, 楼主补习一下浅拷贝和深拷贝
[解决办法]