复制构造函数(2)

来源:互联网 发布:fanuc编程模拟软件 编辑:程序博客网 时间:2024/06/01 22:44

我们上一篇文章提到过,编译器一半会帮我们自动生成复制构造函数。但是当我们的类成员中有指针时,就需要我们自己定义复制构造函数了,因为,编译器只会复制指针,并不会帮我们复制值,我们的目的是,将指针所指向的值复制过去。
就如下面的代码。我们要做的,就是把指针指向的值复制给新的对象。

class NoName{public:    NoName():pstring(new string),i(0),d(0){}    NoName(const NoName& other)        :pstring(new string(*(other.pstring))),        i(other.i),        d(other.d)        {            cout << "NOName Copy Constructor" <<endl;        }    NoName& operator=(const NoName &rhs)    {        cout << "NoName 赋值操作符" <<endl;        pstring = new string;        *pstring = *(rhs.pstring);        i = rhs.i;        d = rhs.d;        return *this;    }protected:private:    string *pstring;    int i;    double d;};
0 0
原创粉丝点击