虚拟函数不变是什么意思?

时间:2015-04-04 19:17:40

标签: c++

我问这个,因为术语可能有点误导。如果它是常量,则不能在派生类中重新定义它。但是,如果它是虚拟的或更好的纯虚拟,则预期/需要在派生类中重写。

那么,这里发生了什么?

2 个答案:

答案 0 :(得分:5)

功能永远不会“不变”。非静态成员函数可以是const。这并不意味着他们不能被覆盖。

const成员函数是允许在const对象上调用的函数,它不能修改对象的不可变成员或调用非const成员函数在同一个对象上。 const虚函数可以被派生类中具有相同名称和参数类型的const函数覆盖。

无法覆盖的功能标记为final。这与const ness正交。

答案 1 :(得分:1)

const修饰符表示方法未修改对象,this指针为const。尽管如此,mutable成员仍然可以修改。