相关疑难解决方法(0)

析构函数被认为是const函数吗?

考虑一下

class Foo
{
public:
    Foo(){}
    ~Foo(){}
    void NonConstBar() {}
    void ConstBar() const {}
};

int main()
{
    const Foo* pFoo = new Foo();
    pFoo->ConstBar(); //No error
    pFoo->NonConstBar(); //Compile error about non const function being invoked
    delete pFoo; //No error 

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

在main函数中,我调用了Foo的const非const函数

试图调用任何非const函数会在Visual Studio中产生错误,就像这样

error C2662: 'Foo::NonConstBar' : cannot convert 'this' pointer from 'const Foo' to 'Foo &'

delete pFoo不会发出任何此类错误.delete语句必然会调用没有const修饰符的Foo类的析构函数.析构函数也允许调用其他非const成员函数.那么它是一个const函数吗?或者是在const指针上删除一个特殊的异常?

c++ destructor

22
推荐指数
2
解决办法
3136
查看次数

标签 统计

c++ ×1

destructor ×1