C++ 对象的初始化和清理 构造函数和析构函数
2020-01-15 12:00
1786 查看
每个对象有初始设置 和 对象销毁前清理数据的 设置 :
类比生活:下载软件的初始化 汉化, 退出网页后的注销账号
构造函数:初始化
构造函数:主要作用再创建对象时为对象成员属性赋值
析构函数:做清理
析构函数:对象销毁前自动调用
这两个函数会被编译器自动调用,
如果我们不提供构造和析构,编译器会自己提供空实现
所以我们得提供构造和析构,编译器自动调用
构造函数的语法:类名( ){ }
1.构造函数,没有返回值,也不写void
2.函数名称与类名称相同
3.构造函数可以有参数,因此可以发生重载
4.程序在创建对象的时候,会自动调用构造,而且指挥调用一次
[code]#include<iostream> using namespace std; //1. 构造函数 进行初始化操作 class Person{ //类名 public: Person(){ //方法名(函数) cout<<"Person 函数构造的调用"<<endl; } }; void test01(){ Person p; //表面上 创建了一个对象p,Person类的 //表面上没有调用Person方法(函数) } int main(){ test01(); }
析构函数语法:~类名( ){ }
1.构造函数,没有返回值,也不写void
2.函数名称与类名称相同,在名称前要加上~
3.构造函数不可以有参数
4.程序在销毁对象前,会自动调用,而且指挥调用一次
[code]#include<iostream> using namespace std; //2. 析构函数 进行清空操作 class Person{ //类名 public: Person(){ //方法名(函数) //构造函数 cout<<"Person 构造函数的调用"<<endl; } ~Person(){//析构函数 cout<<"Person 析构函数的调用"<<endl; } }; void test01(){ Person p; //在栈上数据,test01执行完毕后,释放这个对象 //释放前会调用析构函数 int main(){ test01(); }
why:为什么对象定义在main函数中没有析构函数?
因为存在system("pause"); 没等main函数释放,所以还没轮到析构函数
如果在devc++中不写system("pause");析构函数还是会出现的
[code]#include<iostream> using namespace std; //2. 析构函数 进行清空操作 class Person{ //类名 public: Person(){ //方法名(函数) //构造函数 cout<<"Person 构造函数的调用"<<endl; } ~Person(){//析构函数 cout<<"Person 析构函数的调用"<<endl; } }; int main(){ Person p; system("pause"); }
⭐函数构造的分类以及调用
两种分类方式:
按参数分类:有参构造和无参构造
按类型分类:普通构造和拷贝构造
三种调用方式:
括号法
显示法
隐式转化法
- 点赞
- 收藏
- 分享
- 文章举报
相关文章推荐
- C++ 构造函数、默认构造函数、析构函数和对象初始化
- c++中子对象的初始化可在复合类的构造函数的函数体内进行吗?还是子对象的初始化只能在初始化列表中进行?
- C++ 类 & 对象-类成员函数-类访问修饰符-C++ 友元函数-构造函数 & 析构函数-C++ 拷贝构造函数
- 九、构造函数和析构函数(三) 初始化列表、对象成员初始化、const,引用成员初始化
- (总结)C++的构造函数(初始化列表,缺省/复制和带默认参数的构造函数)和析构函数详解
- C++中对象作为函数形参,返回值时,构造函数,复制构造函数,析构函数的调用顺序(1)
- c++中,类 和 类中成员(对象)的构造函数和析构函数的执行顺序
- C++中什么时候调用副本构造函数初始化一个类对象
- c++面向对象小结(一)--构造函数 析构函数
- 浅谈C++对象模型——理解构造函数、析构函数执行顺序
- C++中基类,派生类 类成员对象的构造函数,析构函数的顺序
- C++面向对象复习(三)——构造函数与析构函数的调用顺序
- 从零开始学C++之构造函数与析构函数(二):初始化列表(const和引用成员)、拷贝构造函数
- 宋体、构造函数-浅出C++对象模型——理解构造函数、析构函数执行顺序-by小雨
- C++ 中构造函数对父类及成员对象的初始化时机
- 从零开始学C++之构造函数与析构函数(一):构造函数、析构函数、赋值与初始化、explicit关键字
- 【C++】初始化与清除(构造函数与析构函数)
- c++之基础知识(1)定义类的对象;析构函数和构造函数常用模板
- 对象初始化以及在构造函数和析构函数中调用virtual函数的问题
- 关注C++细节——含有本类对象指针的类的构造函数、析构函数、拷贝构造函数、赋值运算符的例子