如果需要对派生类新增的初始成员进行初始化,就必须对派生类添加新的构造函数。由于基类的构造函数和析构函数不能继承,因此,对继承类基类原有的数据成员的初始化,必须调用基类的构造函数来完成。
在定义派生类时需要解决两个问题:
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.youkuaiyun.com/nonknown/article/details/17683653