平。 我有一个让我难过的问题。我自定义了一个普通的拷贝构造函数 但它只在初始化对象时才起作用,但在我想将值复制到现有对象时却不起作用。 请看:
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
}
我有加载的问题,它们比这更复杂,但它是我在这个网站上的第一个问题。请帮助我,我不需要快速解决方案,你可以在你的答案写得很多。谢谢。
答案 0 :(得分:1)
在第二种情况下,使用赋值运算符代替复制构造函数。构造函数仅在初始化对象时使用。
您还可以重载赋值运算符。你可以这样做:
Test& operator=(const Test &rhs);