派生类中的虚函数:“virtual”关键字是多余的吗?
在 C 面向对象编程的上下文中,虚函数在实现多态性方面发挥着至关重要的作用。当派生类重写虚函数时,它会创建一个新的实现,而不会破坏其基类的行为。
考虑以下结构体定义:
struct A { virtual void hello() = 0; };
此结构体声明一个纯虚函数函数名为 hello()。现在,让我们研究一下在派生结构体 B 中重写 hello() 的两种方法:
方法#1(使用“virtual”):
struct B : public A { virtual void hello() { ... } };
方法#2(没有"virtual"):
struct B : public A { void hello() { ... } };
乍一看,这些方法之间的唯一区别是重写的 hello() 函数之前是否存在“virtual”关键字。这会产生任何功能差异吗?
答案:不,这两种方法之间没有功能差异。
尽管在方法中使用了“virtual”关键字#1,两种方法是等效的,并且会产生相同的行为。在这种情况下,“virtual”关键字是多余的,因为 hello() 函数已经在基类 A 中声明为 virtual。
因此,在重写派生类中的虚函数时,“virtual”关键字可以是省略而不影响程序的功能或语义。使用与否只是风格和偏好的问题。
以上是在 C 派生类中重写虚拟函数时,'virtual”关键字是否多余?的详细内容。更多信息请关注PHP中文网其他相关文章!