virtual的向后传递
如果成员函数foo被声明为virtual,则所有派生类的foo(foo的声明完全相同)都是virtual
反之不然,派生类声明为virtual,不影响基类
void printOut(const char * str)
{
cout < < str << endl;
}class ClassBase
{
public:
virtual void foo() { printOut("foo in Base Class"); }
};class ClassDerived : public ClassBase
{
public:
void foo() { printOut("foo in Derived Class"); }
};void main()
{
ClassBase p = new ClassDerived;
p->foo();
delete p;
}
将打印”foo in Derived Class”
class ClassBase
{
public:
void foo() { printOut(”foo in Base Class”); }
};class ClassDerived : public ClassBase
{
public:
virtual void foo() { printOut(”foo in Derived Class”); }
};void main()
{
ClassBase p = new ClassDerived;
p->foo();
delete p;
}
将打印”foo in Base Class”
本文探讨了C++中虚函数的工作原理,通过两个类的示例演示了如何实现多态性。首先介绍了一个基类包含虚函数的情况,派生类继承该函数并实现了自己的版本。随后展示了当基类函数不是虚函数时,派生类即使声明了虚函数也无法实现预期的行为。这些例子有助于理解虚函数在C++中的作用。
1494

被折叠的 条评论
为什么被折叠?



