读书人

请问一个复制构造函数的写法

发布时间: 2012-05-22 18:18:54 作者: rapoo

请教一个复制构造函数的写法
该题目来自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));
[解决办法]
深拷贝, 楼主补习一下浅拷贝和深拷贝
[解决办法]
探讨
C/C++ codeNoNoame::NoName(const NoName& Other)
{
pstring=new std::string; // 没有这就,那么后面的pstring 指针就会出现悬挂指针,也就说pstring 没有任何的初始化,它并没有指向任何
//有效空间,你就做了解释引用操作。这样会报错的。
*pstring=*(other.pstring);
i=Other.i;
d=Other.d;
}

读书人网 >C++

热点推荐