为什么加 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) { }
};

posted @ 2026-04-28 09:40  师大无雨  阅读(41)  评论(0)    收藏  举报