初识C++中的构造函数和析构函数
构造函数
作用: 主要用来进行对象的初始化操作
需要注意的几个点:
- 函数名与类名相同
- 没有返回值 也不写void
- 构造函数可以有参数(有参构造函数),可以发生重载,也可以没有参数(默认构造函数)
- 创建对象的时候,构造函数会自动调用,而且只调用一次
下面的代码块,演示了构造函数如何进行对象的初始化
#include<iostream>
#include<string>
using namespace std;class Car {public://构造函数Car(int price,string brand) {m_Price = price;m_Brand = brand;cout << "Car构造函数调用 " << endl;}void display() {cout << "车型是:" << m_Brand << " 价格是: " << m_Price << endl;}private:int m_Price; //汽车价格string m_Brand; //汽车品牌
};
void test() {Car car(200000,"大众桑塔纳"); //栈上的数据,test执行完毕后 会释放这个对象 就会调用析构函数一次car.display();}
int main()
{test();system("pause");return 0;
}
运行结果
说明
上面的代码中,我们声明了一个汽车Car类,并且拥有两个属性,分别是汽车价格m_Price,汽车品牌m_Brand,这里演示了构造函数的使用。
首先可以看到,函数名称与Car同名,这里采用了有参构造函数,方便给两个属性进行赋值。没有返回值,也没有写void。
其次,当我们在测试代码中声明一个Car类对象car的时候,就自动将汽车的两个属性进行了初始化,这一步也就是构造函数完成的工作,然后在后面调用了display方法,展示了汽车的属性。
析构函数
作用 : 主要用来进行对象的清理操作
需要注意的几个点:
- 函数名与类名相同,前面加一个~
- 没有返回值 也不写void
- 析构函数不可以有参数 不可以发生重载
- 对象在销毁前 会自动调用析构函数 而且只会调用一次
下面的代码块,演示了析构函数如何进行对象的清理
#include<iostream>
#include<string>
using namespace std;class Car {public://构造函数Car(int price,string brand) {m_Price = price;m_Brand = brand;cout << "Car构造函数调用 " << endl;}~Car() {cout << "Car的析构函数调用 " << endl;}void display() {cout << "车型是:" << m_Brand << " 价格是: " << m_Price << endl;}private:int m_Price;string m_Brand;
};
void test() {Car car(200000,"大众桑塔纳"); //栈上的数据,test执行完毕后 会释放这个对象 就会调用析构函数一次car.display();}
int main()
{test();system("pause");return 0;
}
运行结果
说明
还是上面的代码,只不过这一次添加了一个析构函数~Car,在函数中只打印了一句话,这样方便我们看到析构函数是否被调用了。
通过程序的运行结果可以看出,在没有添加析构函数的时候,系统也就是编译器本身其实是调用了其自身提供的析构函数,只不过我们看不到,在后台就直接完成了这个操作,当我们添加了析构函数代码时,就可以从最后的运行结果看到编译器调用了析构函数,进行了对象的清理操作
注意:
构造函数和析构函数都是必须有的 如果我们不实现 编译器会提供一个空实现的构造函数和析构函数
初识C++中的构造函数和析构函数相关推荐
- php中的构造函数和析构函数,php 中构造函数和析构函数
构造函数: 在对象实例化时被调用,一个类中只能有一个构造函数,在类中起初始化的作用. 析构函数: 在对象结束时被自动调用. 话不多说,用一段代码来说明两者的区别: //定义一个类 class Pers ...
- C++:继承中的构造函数和析构函数
C++:继承中的构造函数和析构函数 1.继承中构造函数和析构函数调用顺序 a.调用父类构造函数: b.调用其他成员的构造函数: c.调用子类构造函数: d.析构调用顺序相反. #include < ...
- 7-15 单继承中的构造函数与析构函数 (10 分)
7-15 单继承中的构造函数与析构函数 (10 分 编写代码实现一个表示点的父类Dot和一个表示圆的子类Cir,求圆的面积. Dot类有两个private数据成员 float x,y; Cir类新增一 ...
- C++中的构造函数VS析构函数
1.构造函数 类的构造函数是类的一种特殊的成员函数,它会在每次创建类的新对象时执行.构造函数的名称与类的名称的完全相同的,并且不会返回任何数据类型,也不会返回void.构造函数用于为某些成员变量设置初 ...
- 【C++深度剖析教程33】C++中的构造函数与析构函数是否可以为虚函数
加qq1126137994 微信:liu1126137994 一起学习更多技术!!! 问题一:构造函数与析构函数可以成为虚函数么? 答案: 1.构造函数不可以成为虚函数 因为在构造函数执行结束后,虚函 ...
- C++:51---继承中的构造函数、析构函数、拷贝控制一系列规则
一.继承中的构造函数 根据构造函数的执行流程我们知道: 派生类定义时,先执行基类的构造函数,再执行派生类的构造函数 拷贝构造函数与上面是相同的原理 二.继承中的析构函数 根据析构函数的执行流程我们知道 ...
- c++中的构造函数和析构函数
构造函数: C++提供了构造函数(constructor)来处理对象的初始化.在建立对象时自动执行.构造函数的名字必须与类名同名,它不具有任何类型,不返回任何值. 构造函数总结: ①构造函数是C++ ...
- C++学习笔记day47-----C++98-继承中的构造函数,析构函数,拷贝构造函数,拷贝赋值函数,多重继承,虚继承
继承中的构造函数 当通过一个子类创建一个新的对象时,编译器会根据子类在初始化表中指明的基类的初始化方式去调用基类相应的构造函数.如果子类的初始化表中,并没有指明基类的初始化方式,编译器将会调用基类的无 ...
- c语言构造函数和析构函数,深入解析C++中的构造函数和析构函数
构造函数:在类实例化对象时自动执行,对类中的数据进行初始化.构造函数可以从载,可以有多个,但是只能有一个缺省构造函数. 析构函数:在撤销对象占用的内存之前,进行一些操作的函数.析构函数不能被重载,只能 ...
最新文章
- Redis 越来越慢?常见延迟问题定位与分析
- 条款15: 让operator=返回*this的引用
- Linux学习笔记之安装mplayer过程详解
- hdu 2441(ACM(Array Complicated Manipulation))
- 鼎捷软件怎么样_凯里物流仓储怎么样
- AI理论知识整理(9)-级数与数列收敛
- vue watch监听对象
- 推荐阅读《大话设计模式》的策划编辑陈禹成写的新书《电脑使用说明书》
- notepad++以16进制查看文件
- java 内存泄露 jmap_jmap命令 检查内存泄漏
- Leetcode 1015. Smallest Integer Divisible by K
- JavaScript按概率随机生成事件
- pkpm快速入门教程_PKPM快速入门教程.ppt
- excel熵值法计算权重_小技巧1:Excel进行熵值法计算权重,查收一下!
- 快速移除PDF复制到WORD中的换行符
- 关于U盘格式化以后容量突然减少很多的解决办法
- 【机器学习】逻辑回归算法
- 成都链安科技CEO 创始人杨霞:解决智能合约的安全问题,形式化验证是个“利器”!
- html文档头部标记,HTML头部标记
- FORECAST函数预算产品的使用寿命测试值