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

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

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

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

相关推荐
tekin33 分钟前
Go、Java、Python、C/C++、PHP、Rust 语言全方位对比分析
java·c++·golang·编程语言对比·python 语言·php 语言·编程适用场景
小禾苗_2 小时前
C++ ——继承
开发语言·c++
OrangeJiuce3 小时前
【QT中的一些高级数据结构,持续更新中...】
数据结构·c++·qt
程序员-King.5 小时前
【接口封装】——13、登录窗口的标题栏内容设置
c++·qt
萌の鱼6 小时前
leetcode 2826. 将三个组排序
数据结构·c++·算法·leetcode
RAN_PAND6 小时前
STL介绍1:vector、pair、string、queue、map
开发语言·c++·算法
mit6.8249 小时前
[实现Rpc] 通信-Muduo库的实现 | && 完美转发 | reserve | unique_lock
c++·网络协议·rpc
陈无左耳、9 小时前
HarmonyOS学习第3天: 环境搭建开启鸿蒙开发新世界
学习·华为·harmonyos
柃歌10 小时前
【UCB CS 61B SP24】Lecture 7 - Lists 4: Arrays and Lists学习笔记
java·数据结构·笔记·学习·算法