构造函数与析构函数
构造函数和析构函数
构造函数:在创建对象时,自动的进行初始化工作。
析构函数:在销毁对象前,自动的完成清理工作。
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) 如果类的成员也是类,创建对象的时候,先构造成员类;销毁对象的时候,先析构成员类。
本文作者:jinganglang567
本文链接:https://www.cnblogs.com/tgfoven/p/17113432.html
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步