为什么加 const?
const 的作用是:
1.保护原对象:确保拷贝构造函数不会意外修改传入的原对象(比如误操作other的成员变量);
2.支持常量对象拷贝:如果没有const,无法用const Example类型的对象去初始化新对象(比如 const Example b; Example a = b; 会编译失败)。
这里有一个小问题,就是为什么必须要有无参构造函数:
是因为C++ 编译器会为类自动生成默认构造函数(无参、函数体为空)的前提是:类中没有任何自定义的构造函数(包括拷贝构造、带参构造、无参构造)。一旦你自定义了拷贝构造函数,编译器就不会再自动生成无参 / 默认构造函数了。
class MyClass {
public:
MyClass(const MyClass& other) { } // 自定义拷贝构造函数
};
int main() {
MyClass obj; // 编译错误:没有合适的默认构造函数
return 0;
}
解决方法
如需默认构造函数,应显式声明:
class MyClass {
public:
MyClass() = default; // 显式要求生成默认构造函数
MyClass(const MyClass& other) { }
};

浙公网安备 33010602011771号