作者热门文章
- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
在继承层次结构中将方法定义为 virtual
是否足以使多态性发挥作用。在下面的示例中,Der::f 未定义为 virtual
但 d2->f();
打印 der2我正在使用 VS IDE(可能只有它...)
class Base
{
public:
virtual void f() { std::cout << "base"; }
};
class Der : public Base
{
public:
void f() { std::cout << "der"; } //should be virtual?
};
class Der2 : public Der
{
public:
void f() { std::cout << "der2"; }
};
int main()
{
Der* d2 = new Der2();
d2->f();
}
最佳答案
是的,如果您只在基类中将方法定义为虚拟方法,多态性就会起作用。但是,这是我在处理一些大型项目时遇到的惯例,即始终在派生类的方法声明中重复 virtual 关键字。当您处理大量具有复杂类层次结构(许多继承级别)的文件时,它可能很有用,其中类在单独的文件中声明。这样您就不必在添加另一个派生类时通过查找基类声明来检查哪个方法是虚拟的。
关于c++ - 在继承层次中定义一次方法为virtual,使多态性发挥作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20650875/
我正在尝试将多个水平链接的 Button 和 TextView 垂直链接为 View 集,但仍保持平面 View 层次结构。这是我的初始布局和代码:
到目前为止,我已经在Google BigQuery上训练了几种模型,目前我需要查看模型的外观(即架构,损失函数等)。 有没有办法获取这些信息? 最佳答案 仔细阅读文档后,我可以说该功能尚不存在。我什至
本文实例讲述了PHP实现二叉树深度优先遍历(前序、中序、后序)和广度优先遍历(层次)。分享给大家供大家参考,具体如下: 前言: 深度优先遍历:对每一个可能的分支路径深入到不能再深入为止,而且每个
我是一名优秀的程序员,十分优秀!