共计 694 个字符,预计需要花费 2 分钟才能阅读完成。
构造函数和析构函数:
①默认情况下编译器给一个类添加三个函数:
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)
}
正文完