继承的构造函数

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

一 构造函数和析构函数的调用顺序
1 儿子不能继承父亲的构造和析构函数
2 执行顺序
class Base
{
public:
Base()
{ cout<<"基类的构造函数执行!"<~Base()
{ cout<<"基类的析构函数执行!"<};
class DDD
{
public:
DDD()
{ cout<<"DDD类的构造函数"; }
~DDD()
{ cout<<"DDD类的析构函数"; }
};
class Son:public Base
{
private:
DDD d;
public:
Son()
{ cout<<"子类的构造函数 !" <~Son()
{ cout<<"子类的析构函数 !"<};
void main()
{
Son s;

}
(1) 创建父类的对象,构造函数的执行和子类没有关系。
(2)创建子类的对象,构造函数的执行顺序:
(i)首先执行父类的构造函数
(ii)再是对象所在类的构造函数
(ii)最后执行子类的构造函数
(iii)析构函数的执行顺序和构造函数相反
二 子类构造函数的格式:
1 如果父类中只有无参的构造函数,子类不需要调用父类的构造函数。
2 如果父类中有带参数的构造函数,子类必须要调用父类的构造函数,向父类传递参数。
class Person
{
protected:
char name[100];
int age;
public:
Person(char s[100],int sage)
{
strcpy(name,s);
age=sage;
}
void showp()
{ cout<<"姓名:"<};
//Student: 成员变量name,age,g
class Student:public Person
{
protected:
int g;
public:
Student(char s1[100],int sage,int g):Person(s1,sage)
{
this->g=g;
}
void shows()
{
cout<<"姓名:"<<<"成绩:"<}
};
void main()
{
Student s("孙璐",33,89);
s.shows();
}
3 传递参数的格式:
子类的构造函数:父类构造函数名(参数列表)
4 一般子类的构造函数带参数的个数=继承下来的成员变量+子类自己成员变量。





相关文档
最新文档