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)。

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

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

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

相关推荐
_李小白1 分钟前
【OPENGL ES 3.0 学习笔记】第一天:认识渲染管道
笔记·学习
future14124 分钟前
单片机学习日记
单片机·嵌入式硬件·学习
半路程序员17 分钟前
Go语言学习(三)
学习
渡我白衣21 分钟前
深度学习入门(一)——从神经元到损失函数,一步步理解前向传播(上)
人工智能·深度学习·学习
努力努力再努力wz1 小时前
【C++进阶系列】:万字详解智能指针(附模拟实现的源码)
java·linux·c语言·开发语言·数据结构·c++·python
凤年徐1 小时前
【C++】string的模拟实现
c语言·开发语言·c++
牟同學1 小时前
从赌场到AI:期望值如何用C++改变世界?
c++·人工智能·概率论
敲代码的嘎仔1 小时前
JavaWeb零基础学习Day2——JS & Vue
java·开发语言·前端·javascript·数据结构·学习·算法
夜晚中的人海1 小时前
【C++】智能指针介绍
android·java·c++
Amy_au2 小时前
AWS Lambda 学习笔
学习·云计算·aws