const关键字在C++类中的用法

const关键字在C++类中的用法,第1张

const关键字在C++类中的用法

#const 关键字在C++类中的用法
const 在修饰一个变量的时候相当于将这个变量变为常量,如果再对它的值 进行改变则属于非法 *** 作,下面的代码是const关键字对类修饰所需要注意的事项,如果不添加const类虽然也可以照常运行,但是不利于数据的保护。
下面是一个时间类,通过对24小时的时间进行加减 *** 作以及取值和赋值 *** 作简单介绍const在类中的用法。

#include
using namespace std;
class time24
{
public:
	time24(int h=0, int m=0, int s=0) :hours(h), minutes(m), seconds(s)
	{}//构造函数,初始化列表
	void get_time(int &h, int &m, int &s)const;//对时钟取值
	//调用的对象内的数据不可改变,因为加入了const,对get_time()进行限制
	//get_time()函数对类成员变量hours,minutes,seconds的值不能改变
	
	void set_time(int h,int m,int s);//对时钟进行赋值
	//没有加const也不能加const,因为set_time()函数目的就是改变成员变量
	//的值,因此不能加
	
	time24 operator+(int i)const;//调用的对象内的数据不可改变
	//因为加了const函数,主调函数的成员变量不能改变
	time24 operator+(const time24 &t2)const;
	//调用的对象以及作为实参的对象内的数据均不可被改变
	//此处有两个const,参数列表里的const对t2进行保护,t2成员变量不能更改
	//而写在外面的const是保护主调函数的成员变量不能更改。
	//在此处两个const是为了在两个时间相加时,如a=b+c
	//在计算时b,c都不能被改变,值返回a即该函数返回一个time24。
private:
	int hours;//时
	int minutes;//分
	int seconds;//秒
};
void time24::get_time(int &h, int &m, int &s)const
{
	h = hours;
	m = minutes;
	s = seconds;
}
void time24::set_time(int h, int m, int s)
{
	hours = h;
	minutes = m;
	seconds = s;
}
time24 time24::operator+(int i)const
{
	time24 t;
	t.seconds = seconds + i;
	t.minutes =minutes + t.seconds/60;
	t.seconds %= 60;
	t.hours = hours + t.minutes / 60;
	t.minutes %= 60;
	t.hours %= 24;
	return t;
}
time24 time24::operator+(const time24& t2)const
{
	time24 t;
	t.seconds = seconds + t2.seconds;
	t.minutes = minutes + t2.minutes+t.seconds / 60;
	t.seconds %= 60;
	t.hours = hours + t2.hours+t.minutes / 60;
	t.minutes %= 60;
	t.hours %= 24;
	return t;
}
int main()
{
	int h, m, s;
	time24 t3,t4;//若此前加入const,则下面t4,t3不能进行赋值运算,因为此时t4,t3不可变,相当于常量
	const time24 t1(23,59,57), t2;
	//若加上const,则time24不能被改变,则不可调用set_time()
	//因为如果对象前加上const,则对象只能调用带const的对象成员函数以保护象
	//(如果不加const,即使没有改变成员函数的值也不行)
	//而set_time()函数不能加const,因为函数本身就是用于改变对象数据的值
	t4 = t1 + 3;
	t4.get_time(h, m, s);
	cout << h << ":" << m << ":" << s<< endl;
	t3 = t1 + t2;
	t3.get_time(h,m,s);
	cout << h << ":" << m << ":" << s;
}

总结

const修饰类函数后,则函数不能改变类成员变量
const修饰参数变量时,参数的值不能被改变(通常使用const &搭配,在传 地址的时候保护参数,传参避免了复制,也保护了参数)
被const修饰的对象只能调用由const修饰的成员函数以对对象进行保护

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5098016.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-11-17
下一篇 2022-11-16

发表评论

登录后才能评论

评论列表(0条)

保存