C++ const成员变量和成员函数(常成员函数)

在类中,如果你不希望某些数据被修改,可以使用const关键字加以限定。const 可以用来修饰成员变量和成员函数。

const成员变量

const 成员变量的用法和普通 const 变量的用法相似,只需要在声明时加上 const 关键字。初始化 const 成员变量只有一种方法,就是通过构造函数的初始化列表,这点在前面已经讲到了,请猛击《C++初始化列表》回顾。

const成员函数(常成员函数)

const 成员函数可以使用类中的所有成员变量,但是不能修改它们的值,这种措施主要还是为了保护数据而设置的。const 成员函数也称为常成员函数。



我们通常将 get 函数设置为常成员函数。读取成员变量的函数的名字通常以get开头,后跟成员变量的名字,所以通常将它们称为 get 函数。



常成员函数需要在声明和定义的时候在函数头部的结尾加上 const 关键字,请看下面的例子:

1 class Student{
 2 public:
 3     Student(char *name, int age, float score);
 4     void show();
 5     //声明常成员函数
 6     char *getname() const;
 7     int getage() const;
 8     float getscore() const;
 9 private:
10     char *m_name;
11     int m_age;
12     float m_score;
13 };
14 Student::Student(char *name, int age, float score): m_name(name), m_age(age), m_score(score){ }
15 void Student::show(){
16     cout<<m_name<<"的年龄是"<<m_age<<",成绩是"<<m_score<<endl;
17 }
18 //定义常成员函数
19 char * Student::getname() const{
20     return m_name;
21 }
22 int Student::getage() const{
23     return m_age;
24 }
25 float Student::getscore() const{
26     return m_score;
27 }

getname()、getage()、getscore() 三个函数的功能都很简单,仅仅是为了获取成员变量的值,没有任何修改成员变量的企图,所以我们加了 const 限制,这是一种保险的做法,同时也使得语义更加明显。



需要强调的是,必须在成员函数的声明和定义处同时加上 const 关键字。char *getname() constchar *getname()是两个不同的函数原型,如果只在一个地方加 const 会导致声明和定义处的函数原型冲突。



最后再来区分一下 const 的位置:
原文链接: https://www.cnblogs.com/ybqjymy/p/12171518.html

欢迎关注

微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/191676

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年2月12日 下午5:47
下一篇 2023年2月12日 下午5:47

相关推荐