C++类和对象(4)——const与&

const在类中的作用

const在类中可以保证成员变量和对象不被改变。

const添加在函数声明之后

我们以Date类为例

class Date
{
public:
	//全缺省构造函数
	Date(int year = 2000, int month = 1, int day = 1)
	{
		_year = year;
		_month = month;
		_day = day;
	}
	Date(const Date& d)
	{
		_year = d._year;
		_month = d._month;
		_day = d._day;
	}
//print函数的括号之后添加const关键字
	void print()const
	{
		cout << _year << '-' << _month << '-' << _day << endl;
	}

	~Date(){}
private:
	int _year;
	int _month;
	int _day;
};

加了const之后,若我们在print函数中想改变_year/_month/_day这些成员变量,编译器会报错!

const添加在形参之前

就用上面的拷贝构造函数为例子。

经过const修饰后,d的一切都不可改变。

&的作用

学过c的朋友们千万要分清&的用法,别和c++的&搞混!!

c++类中的&一般是表示引用而不是取地址

&用在函数返回类型中

我们以下面这个类为例子

class A
{
public:

	A(int a = 0)
	{
		_a = a;
	}

	~A(){}
//注意这里的&
	A& operator++()
	{
		++_a;
		return *this;
	}

	int  Get_a()
	{
		return _a;
	}

private:
	int _a;
};

int main()
{
	A b(1);
	cout << b.Get_a() << endl;
	++b;
	cout << b.Get_a() << endl;
	
}

我们重载前置++运算符时,返回的类型是A&。

因为我们要改变的是b这个对象自己,改变的是b._a的值,需要返回b对象本身,

return *this。

所以返回的类型是A&,

引用&的本质就是给一个东西起其他的名字,但是新名字也会永远指向那个东西。

&用在形参之前

一般来说,当我们传参的类型有类对象时,形参都建议写成引用的类型。(防止出现无穷递归的情况)。

拷贝构造函数是一定一定要写成引用的形式:类名+&+形参名

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值