C++类中的构造函数

1.概述      

         我们知道C++中定义的对象初始化可以通过成员函数进行初始化,但是每一个对象在初始化的时候就应该有对应的初值,否则就失去对象的意义了。所以C++提供了构造函数来处理对象的初始化。构造函数是一种特殊的成员函数,与其他成员函数不同,不需要用户来调用它,而是在建立对象时自动执行。

2.构造函数的形式

类名(参数表列){函数体}

2.1无参数的构造函数

class People
{
public:
    string name;
    int height;
    int weight;
    People()    //无参构造函数
{
    name='GGbond';
    height=170;
    weight=50;
}   
   

此时我们创建对象

People s;//不需要给出参数,s就自动被初始化为GGbond 170 50了

2.2带参数的构造函数

2.2.1一般形式创建带参数的构造函数

People(string n,int w,int h)	//带参数的构造函数
	{
		name = n;
		weight = w;
		height = h;
	}

创建对象时 

People s("ggbond",180,50);//创建s时候我们要给出参数,这样s就被初始化为我们想要的值

2.2.2利用参数初始化表创建带参数构造函数

People(string n,int w, int h):name(n),weight(w),height(h){}//用参数初始化表初始化

创建对象时和一般形式一样

People s("ggbond",170,50);//给出我们想要的参数即可

2.3带缺省参数的构造函数

People(string n, int w, int h = 50)	//带缺省参数的构造函数,如果我们没有给出h的参数,h就会被初始化为50
	{
		name = n;
		weight = w;
		height = h;
	}

创建对象时

People s("ggbond",170,60);//给出全部参数 s的值 ggbond 170 60
People s1("ggbond",170);//只给两个参数,h被默认初始化为50,s ggbond 170 50
People s2("ggbond");//出错,只给了一个参数,无法匹配

一般我们常用带缺省函数的构造函数

2.4重载构造函数

在类中我们可以重载构造函数,即定义多个构造函数

class People
{public:
	string name;
	int weight;
	int height;
	People()	//无参构造函数
	{
		name = "ggbond";
		weight = 170;
		height = 50;
	}	
	People(string n,int w,int h)	//带参数的构造函数
	{
		name = n;
		weight = w;
		height = h;
	}
	//People(string n,int w, int h):name(n),weight(w),height(h){}//用参数初始化表初始化
	People(string n, int w, int h = 50)	//带缺省参数的构造函数
	{
		name = n;
		weight = w;
		height = h;
	}

}

上面类中定义了三个构造函数。但是他们彼此并不冲突。注意:一个类中只能定义一个带有缺省函数的构造函数,不然很容易出现冲突,出现二义性问题。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值