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

派生类的构造函数

  • 派生类对象包含基类 对象
  • 执行派生类构造函数之前,先执行基类的构造函数
  • 派生类交代基类初始化,具体形式:
    构造函数名(形参表):基类名(基类构造函数实参表)
    {
    }
  • 例子
//
//  main.cpp
//  派生类的构造函数
//
//  Created by MENGCHEN on 16/1/22.
//  Copyright © 2016年 MENGCHEN. All rights reserved.
//
#include 
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<
  • 调用基类构造函数的两种方式
    • 显式方式:
      派生类的构造函数中->基类的构造函数提供参数
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++ - 派生类的构造函数)