C++继承中方法的使用

2014-02-08 13:36:00 · 作者: · 浏览: 107

  一、整体代码

  01.cpp

  #include <IOSTREAM>

  using namespace std;

  class Base {

  public:

  virtual void display() { //纯虚函数,virtual声明的函数,向上转型后的对象才能调用到子类同名的方法

  cout 《 "Base" 《 endl;

  }

  Base() {

  cout 《 "Base …" 《 endl;

  }

  virtual  ~Base() { //纯虚析构函数,只有声明成virtual,向上转型的对象先调用子类的析构函数,再调用父类的析构函数

  cout 《 "~Base …" 《 endl;

  }

  };

  class Derived: public Base {

  public:

  void display() { //覆盖父类的方法

  cout 《 "Derived" 《 endl;

  Base::display(); //使用父类的方法,由于是覆盖,所以同名,要用这种方式来引用

  }

  void test() { //定义自己的方法

  display();

  }

  Derived()

  {

  cout《"Derived …"《ENDL; d- Derived; d="new" Base* { main(void) int }; } …?《endl; cout《 ~Derived ~Derived()>display();

  delete d;

  return 0;

  }

  二、运行结果

  Base …

  Derived …

  Derived

  Base

  ~Derived …

  ~Base …

  三、直接生成子类对象,可以调用子类的public方法和父类public非virtual的方法

  直接生成父类对象,只能调用父类public方法

  生成子类对象向上转型为父类对象,能够调用父类public非virtual的方法和子类覆盖virtual的方法