C++类中的const关键字(常成员变量,常成员函数,常对象)

本文讲解const关键字在类中的使用情况。

常成员变量

在类中的成员变量的前面加上const关键字,表示该成员变量初始化之后不能再改变,注意:常成员变量的唯一初始化方法 用 构造函数的初始化列表。换句话说,在构造函数的内部进行赋值运算的,左边必须是变量(可修改的值),const修饰的变量实际上已经不是变量了。

class student {
public:
	const int age; //常成员变量
public:
	student(int t_age) :age(t_age) {};
	//这种方法是错误的
	//student(int t_age)
	//{
	//   age = t_age;
	//}
};

常成员函数

两点要求:
①const关键字加在函数头尾部,加在首部的是表示返回值是const变量。
②在函数声明和定义的函数头尾部都要加const关键字
const成员函数可以访问所有的成员变量,但是不能修改他们的值,const关键字的作用有两点:一是限制不能修改传入参数的值,二是提醒程序员这是const函数,不要做修改。

class student {
public:
	const int age;
public:
	student(int t_age) :age(t_age) {};

	void get_age() const; //const 成员函数
};
void student::get_age() const //定义处也要加上const关键字
{
	cout << "age = " << endl;
}

常对象

一点要求:常对象只能访问常成员(常成员变量和常成员函数),另外在类外部定义的对象也不能访问Private成员,这是公认的。
两个问题:
①为什么不能访问非常成员?
因为一旦定义为常对象,那么就不是变量了,而是常量,那么该对象的所有成员都是常量,不能修改。哪怕用户没有修改不是常成员变量的值,也要预防,因此一棒子打死,干脆直接不让访问非常成员变量和非常成员函数了。
②为什么可以访问常成员?
因为常成员已经有const限制了,不用怕用户会修改他们的的值。

class student {
private:
	char sex;
public:
	const int age;
	int num;
public:
	student(int t_age) :age(t_age) {};

	void get_age() const; //const 成员函数
};
void student::get_age() const //定义处也要加上const关键字
{
	cout << "age = " << endl;
}

int main()
{
	const student stu = student(10); // 也可以student const stu = student(10);
	//还可以定义指针类型的 const student *stu = new student(10);
	//或者student const *stu = new student(10);
	stu.num = 0; //不能访问,stu是常值,他的所有成员都是常值,不能修改;
	stu.age = 0; //不能修改,age 是const类型的,常值
	cout << stu.age << endl; //可以调用
	cout << stu.sex; //不能访问,sex是private成员
	stu.get_age(); //可以调用
	return 0;
}

总结:常对象只能访问常成员。

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值