30天学习C++从入门到入土 --- Day04

本文详细介绍了C++中对象的构造和析构过程,包括构造函数的定义、调用方式,析构函数的作用,以及构造函数的分类和调用规则。还探讨了赋值构造函数(copy构造函数)的调用场景,浅层拷贝的概念,以及构造函数参数列表的初始化问题。此外,文章还讨论了new和delete操作符与静态成员变量的相关知识点。
摘要由CSDN通过智能技术生成

对象的构造和析构

创建一个对象时,需要做某些初始化工作,例如,对数据成员赋值。
类的数据成员不能再声明类的时候初始化
为了解决这个问题,C++编译器提供了构造函数来处理对象的初始化。

构造和析构函数

1. 定义及调用

1.1 有关构造函数

定义:

  1. C++中类可以定义与类名相同的特殊成员函数,这种与类名相同的成员函数叫析构函数
  2. 构造函数在定义时可以有参数
  3. 没有任何返回类型的声明

调用:
4. 自动调用:一般情况下C++编译器会自动调用构造函数
5. 手动调用:一些情况下需要自己手工调用构造函数

1.2有关析构函数

定义:

  1. C++中类可以定义一个特殊的成员函数清理对象,这个特殊的成员函数叫做析构函数
  2. 语法:
    ~ClassName()
  3. 析构函数也没有参数和返回类型的声明
  4. 析构函数在对象销毁时自动被调用
#include<iostream>
using namespace std;

class Test
{
   
public:
	Test()//无参数,无返回类型,构造函数
	{
   
		cout << "调用构造函数" << endl;
	}
	~Test()//无参数,无返回类型,析构函数
	{
   
		cout << "调用析构函数" << endl;
	}
};
int main()
{
   
	Test t1;

	return 0;
}

2. 构造函数的分类及调用

有参构造函数的三种调用方法:
  1. 括号法 C++编译器自动调用的构造函数
  2. 等号法 C++编译器自动调用的构造函数
  3. 直接调用构造函数 手动调用构造函数
#include<iostream>
using namespace std;

class Test
{
   
private:
	int m_a;
	int m_b;

public:
	Test()//1 无参构造函数
	{
   
		m_a = 0;
		m_b = 0;
		cout << "调用无参构造函数" << endl;
	}

	Test(int a , int b )//2 调用有参构造函数 有三种方法
	{
   
		m_a = a;
		m_b = b;
		cout << "调用有两个参数的构造函数" << endl;
	}
	Test(int a)
	{
   
		m_a = a;
		m_b = 0;
		cout << "调用一个参数的构造函数" << endl;
	}
	Test(const Test&object)//3
	{
   
		cout << "调用拷贝构造函数" << endl;

	}

	void prinT()
	{
   
		cout << "调用普通成员函数 \n" << endl;
	}
};


int main()
{
   
	Test t0;//调用无参构造函数
	//调用有参构造函数 
	//①括号法 C++编译器自动调用的构造函数
	cout << "①括号法:" << endl;
	Test t1(1,2);
	t1.prinT();

	cout << "②等号法:" << endl;
	//②等号法  C++编译器自动调用的构造函数
	//括号里的是逗号表达式,只输出逗号的最后一个值
	//C++对等号的功能的增强
	Test t2 = (1, 2,3,4,5);
	Test t3 = 5;
	cout << endl;
	cout << "③直接调用构造函数:" << endl;
	//③直接调用构造函数  手动调用构造函数
	Test t4 = Test(1, 2);//t4对象的初始化

	return 0;
}

在这里插入图片描述

3.为什么需要构造函数和析构函数

#include<iostream>
using namespace std;

class Test
{
   
private:
	int m_a;
	int m_b;
public:
	//显式初始化
	void init(int a, int b)
	{
   
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值