C++学习Day03之构造函数和析构函数

目录

  • 一、程序及输出
    • [1.1 构造函数](#1.1 构造函数)
    • [1.2 析构函数](#1.2 析构函数)
    • [1.3 构造和析构必须要声明在全局作用域](#1.3 构造和析构必须要声明在全局作用域)
  • 二、分析与总结

一、程序及输出

1.1 构造函数

构造函数

没有返回值 不用写void

函数名 与 类名相同

可以有参数 ,可以发生重载

构造函数 由编译器自动调用一次 无须手动调用

创建的时候调用

c 复制代码
#include<iostream>
using namespace std;
class Person
{
public: //构造和析构必须要声明在全局作用域
	Person()
	{
		cout << "Person的构造函数调用" << endl;
	}
		Person(int a)
	{
		cout << "Person的(int a)构造函数调用" << endl;
	}
}
void test01()
{
	Person p;
}

int main(){
	test01();
	Person p2(2);
	system("pause");
	return EXIT_SUCCESS;
}	

输出:

1.2 析构函数

析构函数

没有返回值 不用写void

函数名 与类名相同 函数名前 加 ~

不可以有参数 ,不可以发生重载

析构函数 也是由编译器自动调用一次,无须手动调用

释放的时候调用

c 复制代码
#include<iostream>
using namespace std;

class Person
{
public:
    Person()
	{
		cout << "Person的构造函数调用" << endl;
	}
	
	Person(int a)
	{
		cout << "Person的(int a)构造函数调用" << endl;
	}
	~Person()
	{
		cout << "Person的析构函数调用" << endl;
	}
}
void test01()
{
	Person p;
}

int main(){
	test01();
	Person p2(2 );
	system("pause");
	return EXIT_SUCCESS;
}

输出:可以看到test01()函数结束后局部变量p被释放p2则是在程序结束后释放

1.3 构造和析构必须要声明在全局作用域


二、分析与总结

构造函数和析构函数是 C++ 中特殊的成员函数,它们分别用于对象的初始化和清理工作。下面是对构造函数析构函数的概括总结:

构造函数(Constructor):

构造函数是一种特殊的成员函数,其名称与类名相同,没有返回类型(包括 void)。

构造函数在创建对象时被自动调用,用于初始化对象的数据成员。

构造函数可以重载,即可以定义多个具有不同参数列表的构造函数,称为重载构造函数。

如果没有定义构造函数,编译器会自动生成默认构造函数,用于执行成员变量的默认初始化。

构造函数可以进行初始化列表初始化成员变量,也可以在函数体内进行初始化。
析构函数(Destructor):

析构函数是一种特殊的成员函数,其名称以波浪号(~)加上类名构成,没有返回类型(包括 void)。

析构函数在对象生命周期结束时自动调用,用于清理对象所占用的资源,例如释放动态分配的内存、关闭文件等。

如果没有定义析构函数,编译器会自动生成默认析构函数,用于执行成员变量的清理工作。

在类中可以只有一个析构函数,且不能重载。

相关推荐
我命由我123459 分钟前
Photoshop - Photoshop 工具栏(57)模糊工具
学习·ui·职场和发展·求职招聘·职场发展·学习方法·photoshop
yatingliu20199 分钟前
将深度学习环境迁移至老旧系统| 个人学习笔记
笔记·深度学习·学习
week_泽23 分钟前
第1课:AI Agent是什么 - 学习笔记_1
人工智能·笔记·学习
CSDN_RTKLIB38 分钟前
【字符编码】有无BOM的UTF-8
c++
开开心心_Every1 小时前
安卓后台录像APP:息屏录存片段,行车用
java·服务器·前端·学习·eclipse·edge·powerpoint
kitsch0x971 小时前
论文学习_QSYM: A Practical Concolic Execution Engine Tailored for Hybrid Fuzzing
学习
QiZhang | UESTC1 小时前
学习日记day55
学习
Chary20161 小时前
opengl 学习资料路径
c++·opengl
Jia shuheng1 小时前
STM32的一键下载CH340 DTR RTS与复位电路NRST的学习笔记
笔记·stm32·学习
wdfk_prog2 小时前
[Linux]学习笔记系列 -- 内核支持与数据
linux·笔记·学习