构造函数和析构函数:

默认情况下编译器给一个类添加三个函数:

1.默认构造函数(无参,函数体为空)  
2.默认析构函数(无参,函数体为空)  
3.默认拷贝构造函数,对成员属性进行拷贝
class car{
    int car_size;
    car(){
        cout<<“默认构造函数”<< endl;
    }
    car(int size){
        car_size=size;
        cout<<“有参构造函数”<< endl;
    }
    car(const car &p){
        car_size=p.car_size
        cout<<“拷贝构造函数”<< endl;
    }
    ~car(){
        cout<<“析构函数”<< endl;
    }
}

②(一)构造函数:可分为有参构造函数/无参构造函数(或拷贝构造函数/其他构造函数)
调用规则:如果用户自定义有参构造,系统不再提供默认无参构造,但提供拷贝构造。如果用户自定义拷贝构造,系统在提供其他构造和函数。
(二)拷贝构造函数:使用时机
1.使用一个已经创建完毕的对象来初始化一个新对象;
2.以值传递的方式给函数参数传值;

实际应用举例:

car C;  //默认构造函
car C1=10;  //有参构造函数
car C2= C;  //拷贝构造函数

继承中的构造函数

  • 继承基类构造函数
    (1)using A::A; 继承所有基类ctor
    (2)不能仅继承指定的某个基类ctor

  • 调用继承的构造函数
struct A {
    A(int i) {} //有参构造函数一
    A(double d, int i) {}  //有参构造函数二
};

struct B : A {  // C++11
    using A::A; // 继承基类所有构造函数
    int d{0};   // 就地初始化
};

int main() {
    B b(1);   // 调用有参构造函数一 A(int i)
}

Oliver
76 声望13 粉丝

Slow Done, Achieve More.