【发布时间】:2021-09-30 22:25:34
【问题描述】:
我们有两个班级。
class A{
public:
void fun(){
cout<<"Parent\n";
}
};
class B:public A{
public:
void fun(){
cout<<"Child\n";
}
};
我试图弄清楚函数 fun() 是否会被视为 overloaded 或 overridden。
我尝试使用 override 关键字,它说该方法未被覆盖。但是我想知道override关键字是否只有在父类中的函数写成virtual并且在上述情况下可以认为该函数被覆盖时才有效。
另外,我想知道重写方法 always 是否意味着后期绑定/运行时多态性?
【问题讨论】:
-
覆盖。仅当方法具有相同的签名(但提供的参数不同)时才会发生重载。
-
两者都不是。它被遮住了。
-
@Urmzd 是不是像非虚方法一样不能被覆盖?
-
@rustyx 你能解释一下吗?一些参考资料?
-
@AdrianMole - 这不是覆盖。这里的人正在尝试学习 C++,所以最好坚持 C++ 术语。此代码中没有覆盖。只有一种方法隐藏另一种。简单明了。
标签: c++ oop inheritance overriding overloading