C++ 继承中 方法的使用

2014-11-24 03:33:23 · 作者: · 浏览: 0

一、整体代码

01.cpp

#include 
  
   
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 ..."<
   
    display(); delete d; return 0; } 
   
  

二、运行结果

Base ...
Derived ...
Derived
Base
~Derived ...
~Base ...


三、

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

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

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