C++学习笔记:类的构造函数

之前我讲了一下关于类的成员函数相关的内容C++学习笔记:类的成员函数的声明与定义
今天学习的类的构造函数是一种特殊的成员函数!
构造函数是用于给类的数据成员进行初始化的!
类的构造函数定义和声明的时候需要注意的几点是:
①构造函数的名字必须和类的名字一模一样
②构造函数没有任何返回值
③构造函数的内部可以是空的,但是必须使用初始化列表为所需要初始化的类数据成员进行初始化。
当所需要进行初始化的成员数据是基本内置的数据类型(如int、double、long…)时,这些数据类型不会自带初始化的功能,因此想要使其初始化为默认值0,不论是在函数内部还是初始化列表中都必须自己将其赋值为0;但是像string这样的类类型,这种数据类型属于一种类,因此是自带初始化功能的,因此想要其初始化为默认值,可以不用自己赋值,C++会自动初始化为空的字符串,但是想要将其初始化为自定义的值则必须初始化。如④的例子所示
④构造函数初始化的时候可以在函数的内部进行初始化,也可以使用构造函数的初始化列表进行初始化,一般来说初始化的时候会优先执行初始化列表,因此用初始化列表的方式去进行初始化会比较好一些,如下:
函数内部初始化:

class Person
{

public:
	Person()
	{
		this->钱=999;
		this->a=0;//即使想要将其初始化为默认值0都需要在构造函数中手动初始化
		this->b=0;
		this->D="1000";//如果string类型需要初始化为自定义的值则需要在构造函数中自己手动初始化
	}
public:
	int 钱;
	int a, b;
	string C;//如果将其初始化为默认值则不需要在构造函数中初始化了
	string D;
};

使用初始化列表进行初始化:(需要注意初始化列表前要加个冒号”:“,初始化时要用()包起来)

class Person
{

public:
	Person():钱(0),a(0),b(0),D("1000"){}
public:
	int 钱;
	int a, b;
	string C;//如果将其初始化为默认值则不需要在构造函数中初始化了
	string D;
};

⑤没有形参的构造函数称之为默认的构造函数,上面的代码示例就是使用的默认的构造函数,默认的构造函数调用的时候在定义类对象的时候就已经自动调用了,即使忘记写构造函数的时候,C++也会自动为你加上默认的构造函数,但是这是极为可怕的,因为当定义一个局部的类对象,此时对于该对象中基本的内置数据类型,其系统默认的构造函数会初始化为一个很奇怪的数值,因为他直接把一个野指针拿过来给该类型进行初始化!!!,如果是类类型就不用管,会正常初始化的;但是对于全局的类对象,也没有事情,C++系统默认添加的构造函数会给每种类型的数据都会初始化为一个正常的值,但是在定义一个类的时候最好自己加上默认的构造函数或者是带形参的构造函数。实例如下:

class Dog
{
public:
	int 数量;
	string 名称;
};

Dog b;//创建全局变量b
int main()
{
	
	Dog a;//创建局部对象a

	system("pause");
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值