C++ - 派生类的构造函数

派生类的构造函数

  • 派生类对象包含基类 对象
  • 执行派生类构造函数之前,先执行基类的构造函数
  • 派生类交代基类初始化,具体形式:
    构造函数名(形参表):基类名(基类构造函数实参表)
    {
    }
  • 例子
//
//  main.cpp
//  派生类的构造函数
//
//  Created by MENGCHEN on 16/1/22.
//  Copyright © 2016年 MENGCHEN. All rights reserved.
//
#include <iostream>
using namespace std;
class base {
    int a,b;
public:
    base(int numA,int numB);
    void PrintInfo();
};
base::base(int numA,int numB){
    a = numA;
    b = numB;
}
void base::PrintInfo(){    
    cout<<a<<"\n"<<b<<endl;
}
class derive:public base {
    int c;
public:
    derive(int numA,int numB,int numC);
    void PrintInfo();
};
derive::derive(int numA,int numB,int numC):base(numA,numB)
{
    c = numC;
}
void derive::PrintInfo(){
    base::PrintInfo();
    cout<<c;
}
int main(int argc, const char * argv[]) {
    // insert code here...
    derive a(1,2,3);
    a.PrintInfo();
    return 0;
}
  • 调用基类构造函数的两种方式
    • 显式方式:
      派生类的构造函数中->基类的构造函数提供参数
derived::derived(arg_derived-list):base(arg_base-list)
- 隐式方式:

派生类的构造函数中,省略基类构造函数时
派生类的构造函数,自动调用基类的默认构造函数

  • 派生类的析构函数被执行的时候,执行完派生类的析构函数后,自动调用基类的析构函数

调用顺序

  • 创建派生类的对象时,执行派生类的构造函数之前:
    • 调用基类的构造函数
      ->初始化派生类对象中从基类继承的成员
    • 调用成员对象类的构造函数
      ->初始化派生类对象中成员对象
  • 执行完派生类的析构函数之后:
    • 调用成员对象类的析构函数
    • 调用基类的析构函数
  • 析构函数的调用顺序与构造函数的调用顺序相反
class Skill{
    public:
          Skill(int n){}
};
class FlyBug:public Bug{
      int nWings;
      Skill sk1,sk2;
public:
      FlyBug(int legs,int color ,int wings);
};
FlyBug:FlyBug(int legs,int color,int wings):Bug(legs,color),sk1(5),sk2(color){
    nWings = wings;
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • C++文件 例:从文件income. in中读入收入直到文件结束,并将收入和税金输出到文件tax. out。 检查...
    SeanC52111阅读 2,898评论 0 3
  • C++ 面向对象编程 博客园地址:http://www.cnblogs.com/xiongxuanwen/p/42...
    先之阅读 692评论 0 1
  • C++虚函数 C++虚函数是多态性实现的重要方式,当某个虚函数通过指针或者引用调用时,编译器产生的代码直到运行时才...
    小白将阅读 1,761评论 4 19
  • 今天练习 深入禅修只是为了获得心的宁静,感受到内心的美好吗?你一定错误的理解了禅修。生命是借由禅修的方法,进入“观...
    谷应阅读 1,315评论 0 5
  • 感恩父母给予我生命,感恩老公辛苦付出,感恩儿子的改变,感恩女儿的聪明,感恩朋友分享的圣经播放器,感恩过去上司给我借...
    享望阅读 116评论 0 0