【发布时间】:2015-06-13 18:48:29
【问题描述】:
当 const 对象被销毁时,有没有办法从析构函数中调用 const 成员函数?
考虑:
struct My_type {
~My_type () {
show ();
}
void show () {
cout << "void show ()" << endl;
}
void show () const {
cout << "void show () const" << endl;
}
};
及用法:
My_type mt;
const My_type cmt;
mt.show ();
cmt.show ();
输出:
void show ()
void show () const
void show ()
void show ()
有人能解释一下为什么当 cmt 被销毁时没有调用 const 版本的 show 吗?
【问题讨论】:
-
const_cast<const MyType*>(this)->show();?不过,我很好奇你的用例。 -
@NeilKirk 你正在销毁对象及其成员,这怎么可能是“const”?
-
@NeilKirk 在构造过程中修改的方式相同
-
我担心您需要两个(交互)类型“My_type”和“My_const_type”来实现您的目标。
-
@NeilKirk:我记得曾经希望
const有构造函数和析构函数的重载。我不记得用例了,但它与希望将某些内容作为公共成员存储在可变对象中的值或通过 const-ref 存储在 const 对象中有关。
标签: c++ c++11 destructor