c++ - 在基类中调用的虚拟基函数,C++
问题描述
我有一堂课:
class B
{
public:
FuncCallingFoo();
protected:
virtual Foo (const arg argument);
}:
现在,函数 Foo 在类 B 的主体中使用,即它在 FuncCallingFoo 的定义中的某处被调用。
我也有类 A,它继承自 B 并有自己的 Foo 实现:
class A:B
{
...
protected:
Foo (const arg argument);
};
假设我创建了一个类 A 的实例:
A a;
此外,假设我执行以下调用:
a.FuncCallingFoo();
这会导致调用类 A 中的 Foo 的实现吗?
解决方案
不,因为您已Foo
在 and 中声明为受保护class A
并且B
您没有请求public
继承:(class A:B
是的,这仍然是有效的 C++)。
实际上,由于此问题,您的程序将无法编译(在修复默认返回值和参数错误之后)。
请参阅:私有、公共和受保护继承之间的区别
推荐阅读
- c++ - 调试断言在 Visual Studio 中失败,但在在线 IDE 上运行正常
- powershell - 对于邮件中的每个文件,您可以修复吗?
- c++ - 为自定义类型重载 std::to_string 和 std::to_chars?
- arrays - 在 postgresql 中将数据插入到表的用户定义类型元素中
- visual-studio - 如何在 Windows server 2012 中安装没有 Visual Studio 2015 的 Crystal Report?
- sql-server - 如何按天和小时字段进行排序?
- listview - React Native 中的平滑动画滚动视图
- javascript - 如何使用Nodejs查找每个数组对象的位置
- excel - 为文本列分配一个新的唯一 int 列
- jquery - 修复了 jQuery 可排序列表中的项目