构造函数和析构函数
构造函数:在创建对象时,自动的进行初始化工作。
析构函数:在销毁对象前,自动的完成清理工作。
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) 如果类的成员也是类,创建对象的时候,先构造成员类;销毁对象的时候,先析构成员类。
标签:调用,函数,与析构,创建对象,参数,析构,构造函数 From: https://www.cnblogs.com/tgfoven/p/17113432.html