C++ 重新定义和重写函数之间的区别
假设我有一个类C++ 重新定义和重写函数之间的区别,c++,c++11,overriding,virtual,virtual-functions,C++,C++11,Overriding,Virtual,Virtual Functions,假设我有一个类A和一个虚拟函数F(): 我还有另一个类B,它继承了A,并重新定义了F(): 和另一个类C,它也继承a,但重写F(): 类B和C中的F()之间有什么区别?都是覆盖 当您使用关键字override时,如果它恰好不是一个override,则会确保编译失败 这是一个很好的实践。两个B::f()和C::f()都是重写,它们完全相同 override本质上是一个编译时建议术语,如果函数不重写基类中的一个,则会导致编译错误 这有助于程序的稳定性:如果更改了A::f()的名称和参数类型,则会导致
A
和一个虚拟函数F()
:
我还有另一个类B
,它继承了A
,并重新定义了F()
:
和另一个类C
,它也继承a
,但重写F()
:
类B
和C
中的F()
之间有什么区别?都是覆盖
当您使用关键字override
时,如果它恰好不是一个override,则会确保编译失败
这是一个很好的实践。两个B::f()
和C::f()
都是重写,它们完全相同
override
本质上是一个编译时建议术语,如果函数不重写基类中的一个,则会导致编译错误
这有助于程序的稳定性:如果更改了
A::f()
的名称和参数类型,则会导致编译错误。更不用说阅读存储库时的可读性因素了,如git@Tgsmith61591:是的。我还想知道是否要包括一个如何在不重写的情况下重载(本质上是“重新定义”)的示例。但我决定简明扼要。:)
class A
{
virtual void F()
{
// Do something
};
};
class B : A
{
void F()
{
// Do something
};
};
class C : A
{
void F() override
{
// Do something
};
};