构造函数和析构函数:
①默认情况下编译器给一个类添加三个函数:
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)
}
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。