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

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

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

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

相关推荐
GilgameshJSS20 分钟前
【学习K230-例程19】GT6700-TCP-Client
网络·python·网络协议·学习·tcp/ip
悠悠~飘1 小时前
php学习(第五天)
学习·php
能不能别报错1 小时前
K8s学习笔记(二):Pod
笔记·学习·kubernetes
呱呱巨基2 小时前
C/C++ 内存管理
c++·笔记·学习
半桔2 小时前
【网络编程】TCP 服务器并发编程:多进程、线程池与守护进程实践
linux·服务器·网络·c++·tcp/ip
橘子132 小时前
C++实战:搜索引擎项目(二)
开发语言·c++·搜索引擎
应用市场3 小时前
Qt C++ 图形绘制完全指南:从基础到进阶实战
开发语言·c++·qt
楼田莉子3 小时前
python小项目——学生管理系统
开发语言·python·学习
青草地溪水旁3 小时前
设计模式(C++)详解—单例模式(2)
c++·单例模式