赞
踩
问题及代码:
- #include <iostream>
- using namespace std;
- class Data
- {
- public:
- Data(int i):x(i)
- {
- cout<<"A";
- }
- ~Data()
- {
- cout<<"B";
- }
- private:
- int x;
- };
- class Base
- {
- public:
- Base(int i):b1(i)
- {
- cout<<"C";
- }
- ~Base()
- {
- cout<<"D";
- }
- private:
- int b1;
- };
- class Derived:public Base //Base为基类,Derived为派生类
- {
- public:
- Derived (int i,int j):Base(i),d1(j)
- {
- cout<<"E";
- }
- ~Derived()
- {
- cout<<"F";
- }
- private:
- Data d1;
- };
- int main()
- {
- Derived obj(1,2);
- return 0;
- }
运行结果:
学习心得:
调用 Dericed类的构造函数 首先调用Base基类的构造函数,所以 cout<<"C";
然后建立的对象中含有一个 Data类的数据成员,执行构造函数 cout<<"A";
然后才轮到Derived的构造函数 cout<<"E";
到return语句中 对构建的对象进行析构,先执行派生类的析构函数 cout<<"F";
在析构的同时,先析构了作为数据成员的Data类 cout<<"B"
然后执行基类的析构函数 cout<<"D";
知识点总结:
构造函数 先执行基类的,再执行派生类的
析构函数 先执行派生类的,在执行基类的
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。