《重生到现代之从零开始的C++生活》—— 类和对象2
类的默认成员函数
默认成员函数就是用户没有显示实现,编译器会自动生成的成员函数,一个类会默认生成6个成员函数
构造函数
构造函数时特殊的成员函数,构造函数的初始化对象
-
函数名与类名相同
-
没有返回值
-
对象实例化的时候胡自动调用构造函数
-
构造函数可以重载
-
如果类中没有显式定义函数,会自动生成一个无参的默认构造函数
class a
{
public:
add(int a.int b)
{
return a+b;
}
a()
{
_a=1;
_b=1;
}//无参构造函数
a(int a=1,int b=1)
{
_a=a;
_b=b;
}//全缺省构造函数
private:
int _a;
int _b;
};
- 无参函数和全缺省构造函数,还有默认生成的构造函数,我们都叫默认构造函数,但是他们三个不能同时存在
反正不传实参就能调用的构造函数就是默认构造
在编译器自己生成的构造函数中,他对内置类型的变量的初始化是不确定的,所以我们要自己写构造函数
对于自定义类型,会调用这个自定义类型成员变量的默认构造函数,如果没有就会报错
析构函数
析构函数与构造函数相反,解析函数就是对资源的亲历工作,多用于动态开辟内存的时候才需要析构函数
在对象销毁时会自动调用解析函数
- 析构函数是在类前面加一个~
- 也是无参数无返回值
- 一个类只有一个解析函数,如果没有编译器会默认生成
编译器默认生成的析构函数对内置类型不处理,自定义类型成员会调用他自己的析构函数
他的意思就是,只要有开辟动态空间的行为,我们就要自己写,不管在哪里,因为类似指针就是就是内置类型,要释放我们就要自己写