放置一个常量的析构函数是有用的吗?

时间:2015-10-23 11:14:55

标签: c++ const destructor

我想知道将析构函数置于常量是否有用? 例如:

class example
{
    public : 

    example(int params); 
    const ~example(); //Here
}

3 个答案:

答案 0 :(得分:2)

从概念的角度来看,这没有任何意义。 const函数没有副作用。因此,他们需要返回一些东西。由于析构函数不返回任何内容,因此该函数将无用。

(顺便说一下,类似于const void功能)

如评论中所述,您仍然可以修改mutable中的const数据。

答案 1 :(得分:1)

它无用,因为它不可能:

  

错误:析构函数声明中不允许使用限定符

答案 2 :(得分:0)

它没用,并且通常会触发编译器的警告 - 通常是忽略限定符的效果。

函数返回时的const限定符主要仅对返回指针或引用的函数有用(例如,表示返回的引用是指不应在逻辑上更改的对象)。析构函数不会返回任何内容,因此const无法获得限定。

编译器将拒绝使析构函数本身const(即~example() const)。这是合适的,因为析构函数通常会更改对象的状态(使其不再逻辑存在)