c++ 构造函数

构造函数
默认构造函数、转换构造函数、拷贝构造函数

默认构造函数
当用户没有定义时,编译器会自动生成默认的构造函数。当用户自定义了其他构造函数,那么编译器则不会生成构造函数,若要使用无参数的生成对象,那么必须自定义一个无参数版本的构造函数。

=default用法
Base() = default;是一个默认构造函数,当我们既需要其他形式的构造函数,也需要默认构造函数时,就可以用=default

什么时候会调用析构函数?
析构函数:释放构造函数申请的内存空间,做一些内存清理工作,析构函数必须为public。
1、变量离开作用域时(一个{}就是一个作用域)
2、对象被销毁的时候,其成员被销毁
3、容器被销毁的时候,其元素被销毁
4、对于动态分配的对象,使用delete销毁的时候

new时会自动调用构造函数,delete会自动调用析构函数

转换构造函数
把参数类型得数据转换为类对象得构造函数。两种形式,第一种只有一个参数,第二种有若干参数,除了最左边的参数,都有默认值。

拷贝构造函数
每个类必须要有,若没有定义则自动提供,只有一个参数,参数的类型必须为自身类的引用。
拷贝构造函数有三个作用,同类对象相互初始化;传值调用时实参传递给形参;值返回的方式返回给对象。

尽量避免传值的方式传递参数,以引用类型或指针类型传递结构和类的对象。

重载
同一个类,内部的同名函数具有不同的参数列表称为重载 。

重写
派生类对基类同名函数的“本地改造”,要求函数特征标完全相同。当然,返回值类型不一定相同 。

你可能感兴趣的:(c++,c++)