金
刚
狼
D
G
O
L

构造函数与析构函数

构造函数和析构函数

构造函数:在创建对象时,自动的进行初始化工作。

析构函数:在销毁对象前,自动的完成清理工作。

1)构造函数

语法:类名(){......}

l 访问权限必须是public。

l 函数名必须与类名相同。

l 没有返回值,不写void。

l 可以有参数,可以重载,可以有默认参数。

l 创建对象时只会自动调用一次,不能手工调用。

2)析构函数

语法:~类名(){......}

l 访问权限必须是public。

l 函数名必须在类名前加~。

l 没有返回值,也不写void。

l 没有参数,不能重载。

l 销毁对象前只会自动调用一次,但是可以手工调用。

注意:

1) 如果没有提供构造/析构函数,编译器将提供空实现的构造/析构函数。

2) 如果提供了构造/析构函数,编译器将不提供空实现的构造/析构函数。

3) 创建对象的时候,如果重载了构造函数,编译器根据实参匹配相应的构造函数。没有参数的构造函数也叫默认构造函数。

4) 创建对象的时候不要在对象名后面加空的圆括号,编译器误认为是声明函数。(如果没有构造函数、构造函数没有参数、构造函数的参数都有默认参数)

5) 在构造函数名后面加括号和参数不是调用构造函数,是创建匿名对象。

6) 接受一个参数的构造函数允许使用赋值语法将对象初始化为一个值(可能会导致问题,不推荐)。

7) 用new/delete创建/销毁对象时,也会调用构造/析构函数。

8) 不建议在构造/析构函数中写太多的代码,可以调用成员函数。

9) 除了初始化,不建议让构造函数做太多工作(只能成功不会失败)。

10) C++11支持使用统一初始化列表。

12) 如果类的成员也是类,创建对象的时候,先构造成员类;销毁对象的时候,先析构成员类。

posted @ 2023-02-12 11:01  jinganglang567  阅读(95)  评论(0)    收藏  举报