c++ - 如何防止基类指针下的派生类对象调用基类中定义但在派生中被覆盖的公共(public)非虚函数?

标签 c++ virtual-functions

假设基类 B 有一个非虚公共(public)函数 f() ,不幸的是它被派生类 D 覆盖了。

然后有一个D对象d传递给了一个B指针pB

有没有办法阻止调用pB->f()

最佳答案

如果你可以改变B,你可以将f变成虚拟的,或者将它转发到一个虚拟保护的do_f,或者其他各种东西。

如果你不能改变 B,你就不能阻止它的公共(public)方法被调用,你也不能以某种方式拦截对非虚拟基类方法的调用。

关于c++ - 如何防止基类指针下的派生类对象调用基类中定义但在派生中被覆盖的公共(public)非虚函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39441214/

相关文章:

c++ - 基于继承的类型参数更改父虚函数的行为

c++ - 当新建一个对象并将创建的对象的地址分配给它的基类指针时,编译器会做什么

c++ std::vector<> vs new[] 性能

c++ - TBB 管道库的输入过滤器指导

c++ - 如何在 QT 旋转框和标签中将 300000 显示为 300,000?

c++ - 将 constexpr 表达式转换为模板非类型参数

c++ - C++中纯虚函数的用途是什么?

c++ - 如何伪造包含非虚函数的 C++ 类?

c++ - GCC 看不到通过多重继承实现

C++ 数组大小取决于函数参数会导致编译错误