C++:为什么复制构造函数的参数一般是const型的?

如题
2025-02-24 17:54:09
推荐回答(1个)
回答1:

因为复制构造函数是用引用方式传递复制对象,引用方式传递的是地址,因此在构造函数内对该引用的修改会影响源对象。而你在用对象a1构造a2时,自然不希望复制构造函数会改变a1的内容,因此要防止复制构造函数内部修改该引用,所以用const声明。

class A
{
int x;
A(int c){x=c;};
A(const A & c){x=c.x}; // 复制构造函数
}

void main()
{
class A a1(10);
class A a2(a1); // 在用a1构造a2的时候,你当然不希望a1会被改变。
}