【C++面向对象】类的私有数据成员的两种初始化方式

构造函数

  我们知道类的构造函数,要么是先在类内声明,在类外实现;要么就是直接在类内实现(构造函数函数体很简单的情况下)。那么当构造函数在类内实现的时候,一般构造函数的函数体仅仅是起到对类的私有数据成员进行初始化的作用。这次就小小的总结一下,当构造函数在类内实现的时候,两种不同的对类的私有数据成员的初始化方式。

  以点Point类为例,首先Point类有两个私有数据成员x和y(表示点的横坐标和纵坐标);

private:	//私有数据成员
	int x, y;

  Point类的构造函数可以写成以下两种方式:

//1
Point(int xx = 0, int yy = 0) {
		x = xx;
		y = yy;
	}
//2
Point(int x = 0, int y = 0) : x(x), y(y) { }

  注意,第二种方法中的初始化列表中的x(x),虽然都是相同的x变量名,但是两个x是完全不同的变量。括号外的x是类的私有数据成员x,作用域为整个类,等待被初始化;括号内的x是构造函数的局部变量x,它的值为主函数main中的Point类的对象传入构造函数的参数值,作用域仅限构造函数,括号内的x用来初始化括号外的x;

  显然,第二种方法更简洁直观,它直接把类的私有数据成员x和y在构造函数初始化列表进行了初始化,从而无需动用函数体,简化了代码,不失为一种更好的选择。(注意,这里首先执行构造函数的形参表,然后再执行初始化列表)

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值