const对象只能调用const函数

const对象为什么还是会自动调用非const构造函数和非const析构函数,不是说const对象只能调用const函数吗

我的理解是:虽然构造、析构无法加const即不是const成员函数,但const对象能调用它们,是因为const对象(假设是class A的)首先你得创建,创建成功了才可以说是const对象。
而这个类对象既然要创建,那肯定有A的成员变量,所以构造函数中对这些成员变量初始化即改变了成员变量的值,所以构造无法加const。虽然这次改变了const对象的成员变量,但经此过后,const对象才算真正创建。
而构造就一次,接下来不就无法被改变了吗,即相当于const了。
析构同理。

方案来自 梦想橡皮擦 狂飙组基于 GPT 编写的 “程秘”


在 C++ 中,const 对象只能调用 const 成员函数,但它仍然可以调用非 const 构造函数和析构函数,因为这些函数在创建和销毁对象时不能被修改。如果构造函数或析构函数本身有一些副作用,则它们仍然可以在 const 对象上调用。

这是因为构造函数和析构函数在创建和销毁对象时不受 const 限制。因此,即使对象本身是 const,它仍然可以使用非 const 构造函数和析构函数。