C++派生类的构造函数和析构函数

来源:互联网 发布:bp神经网络算法实现 编辑:程序博客网 时间:2024/05/21 17:11

如果需要对派生类新增的初始成员进行初始化,就必须对派生类添加新的构造函数。由于基类的构造函数和析构函数不能继承,因此,对继承类基类原有的数据成员的初始化,必须调用基类的构造函数来完成。

在定义派生类时需要解决两个问题:

1.派生类的构造函数如何定义。
2.派生类的构造函数中如何调用基类的构造函数。

例子:

#include <iostream>using namespace std;class A{public:A(int a = 0, int b = 0)//含有默认参数的构造函数{x = a;y = b;cout<<"正在调用A类(基类)的构造函数..."<<endl;}~A() { cout<<"正在调用A类(基类)的析构函数..."<<endl; }protected:int x;int y;};class B : public A{public:B(int a = 0, int b = 0, int c = 0) : A(a,b)  //显示调用基类的构造函数{z = c;cout<<"正在调用B类(派生类)的构造函数..."<<endl;}~B() { cout<<"正在调用B类(派生类)的析构函数..."<<endl; }void Display(){cout<<"x = "<<x<<endl;cout<<"y = "<<y<<endl;cout<<"z = "<<z<<endl;}protected:int z;};int main(){B Unknown(2013,12,30);Unknown.Display();return 0;}

程序运行显示结果:

正在调用A类(基类)的构造函数...
正在调用B类(派生类)的构造函数...
x = 2013
y = 12
z = 30
正在调用B类(派生类)的析构函数...
正在调用A类(基类)的析构函数...
Press any key to continue


转载请保留原文地址:http://blog.csdn.net/nonknown/article/details/17683653

0 0