与虚函数相关的几点注意之一——virtual的向后传递

来源:互联网 发布:office办公软件难学吗 编辑:程序博客网 时间:2024/06/07 10:38
【愿为写于21 January 2007 ,注】

 

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” 

原创粉丝点击