复制构造函数。有用

时间:2015-09-06 20:43:05

标签: c++ initialization copy-constructor

平。 我有一个让我难过的问题。我自定义了一个普通的拷贝构造函数 但它只在初始化对象时才起作用,但在我想将值复制到现有对象时却不起作用。 请看:

class Test {
    public:
        int a;
        int b;

        Test() {
            a=0;
            b=0;
        } // default constructor

        Test(int x,int y): a(x), b(y) {} //constructor number 2

        Test(Test & object): a(object.a*2), b(object.b*2) { }

        // (i multiply times two to see the difference between
        // compilators default copy constructor and my selfdefined - see above)

        void show() { //it shows the current value
            cout << "a:" << a << endl;
            cout << "b:" << b << endl;
        }
};

int main() {
    Test A(2, 4);
    Test B = A; // my copy constructor works **only** while initializing... 
    B.show(); //...so printed values are as i want: B.a=4 B.b=8...
    B = A;//...but now i think my own should be used...
    B.show();//... but is not i thought it should be B.a=4 B.b=8 but
//the default compilers copy constructor is used and: B.a=2 B.b=4 as in     //object A
}

我有加载的问题,它们比这更复杂,但它是我在这个网站上的第一个问题。请帮助我,我不需要快速解决方案,你可以在你的答案写得很多。谢谢。

1 个答案:

答案 0 :(得分:1)

在第二种情况下,使用赋值运算符代替复制构造函数。构造函数仅在初始化对象时使用。

您还可以重载赋值运算符。你可以这样做:

Test& operator=(const Test &rhs);