2022.6.2 C++——构造函数与析构函数

23 篇文章 0 订阅

1. 构造函数

1.1 构造函数的定义

数据成员多数是私有的,要对它们进行初始化,必须用一个公有函数来进行,同时这个函数应该在且仅在定义对象时自动执行一次,称为构造函数。
构造函数的用途:
①创建对象
②初始化对象中的属性
③类型转换

1.2 构造函数的使用

构造函数是特殊的公有成员函数(在特殊用途中构造函数的访问限定可以定义成私有或保护),其特征如下:
(1)函数名必须与类名相同;
(2)构造函数无函数返回类型说明;注意是没有而不是void,即就是什么也不写,也不能写void;实际上构造函数有返回值,返回的就是构造函数所创建的对象;
(3)在程序运行时,当新的对象被建立,该对象所属的类构造函数自动被调用,在该对象生存期中也只能调用一次;
(4)构造函数可以重载;严格地讲,类中可以定义多个构造函数,它们由不同的参数表区分,系统在自动调用时按一般函数重载的规则选一个执行;
(5)构造函数可以在类中定义,也可以在类中声明,在类外定义;
(6)如果类说明中没有给出构造函数,则C++编译器自动给出一个缺省的构造函数:
类名(void) { }
但只要我们定义了一个构造函数,系统就不会自动生成缺省的构造函数;只要构造函数是无参的或者只要各参数均有缺省值的,C++编译器都认为是缺省的构造函数,并且缺省的构造函数只能有一个。
如:

class Complex
{
private:
	int Real;//实部
	int Image;//虚部
public:
	Complex()  //缺省的构造函数
	{
		Real = 0;
		Image = 0;
		cout << "Create Object: Complex()" << endl;
	}
	Complex(int r, int i)//带参数的构造函数
	{
		Real = r;
		Image = i;
		cout << "Create Object: Complex(int ,int)" << endl;
	}
	void Print()
	{
		cout << "Real=" << Real  << "Image=" << Image << endl;
	}
};
int main()
{
	Complex ca;
	Complex cb(1, 2);
	Complex cc = Complex(3, 4);
	Complex cd{ 5,6 };;
	return 0;
}

运行结果:
在这里插入图片描述
注意:Complex ce( );是不可以构造对象的。

2. 析构函数

1.1 析构函数的定义

当定义一个对象时,C++自动调用构造函数建立该对象并进行初始化,那么当一个对象的生命周期结束时,C++也会自动调用一个函数注销该对象并进行善后工作,这个特殊的成员函数即析构函数。

1.2 析构函数的使用

在使用析构函数时,有如下的使用注意:
(1)析构函数名与类名相同,但在前面加上字符“~”,如:~CGoods;
(2)析构函数无函数返回类型,与构造函数在这一方面是一样的,但是析构函数不带任何参数;
(3)一个类有一个也只有一个析构函数,这与构造函数不同,构造函数有很多;
(4)对象注销时,系统自动调用析构函数;
(5)如果类说明中没有给出析构函数,则C++编译器自动给出一个缺省的析构函数。
如:~类型名称( ) { }
示例:

class Complex
{
private:
	double Real;//实部
	double Image;//虚部
public:
	Complex() :Real{}, Image{}  //缺省的构造函数
	{
		cout << "Create Object:" << this << endl;
	}
	Complex(double r, double i) :Real{ r }, Image{ i }//带参数的构造函数
	{
		cout << "Create Object: " << this << endl;
	}
	~Complex()
	{
		cout << "Destroy Object:" << this << endl;
	}
	void Print() const  //常方法
	{
		cout << "Real=" << Real  << "Image=" << Image << endl;
	}
};

其中:
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值