c++ - 是否可以防止成员函数被重新定义?

标签 c++ object polymorphism

我希望 B 类不能重新定义其基类 A 的成员函数之一。有没有办法做到这一点?

编辑:

感谢您的回答。我也可以防止非虚拟成员函数被覆盖吗?

最佳答案

如果您的意思是不允许派生类覆盖其基类的虚函数,C++11 引入了一种使用 final 的方法virt-specifier(标准中的称呼):

struct B{
  virtual void f() final;
};

struct D : B{
  void f(); // error: 'B::f' marked 'final'
};

不过,我不知道哪些编译器支持它。可能是 GCC 4.7 和 Clang。

关于c++ - 是否可以防止成员函数被重新定义?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8759455/

相关文章:

c++ - 为什么此 reinterpret_cast 在 Visual Studio 中失败?

python - python对象的自动redis查找

javascript - 创建 javascript 对象的最佳实践?

c# - 查找虚方法的原始实现

polymorphism - Coq 中交换的适当多态定义

c++ - 在静态成员变量初始值设定项中,为什么调用静态成员函数(不是全局函数)?

c++ - 从 UUID 中提取 MAC 地址

c++ - std::list 或 std::multimap

c++ - 在 C++ 中覆盖对象

c++ - 基类返回指向派生类的指针,而无需在 C++ 中显式强制转换