C++常成员变量
Posted LC编程开发者
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C++常成员变量相关的知识,希望对你有一定的参考价值。
常成员变量
常成员变量的用法与一般常变量相似,用关键字 const 来声明常成员变量。常成员变量的值不能改变的。有一点要注意:只能通过构造函数的初始化参数列表对常成员变量进行初始化。如下是一个测试例子:
程序运行结果如下:
在student类中定义了一个const类型的成员变量,如下:
const long long number; //电话号码
那么,该成员变量是const类型,所以,在定义student类对象的时候,必须给const类型的number成员变量进行初始化。而且,只能够在构造函数的初始化参数列表中进行。例如:
student(char* pn, char* pa, long long n):number(n)
所以,在初始化参数列表中,对number成员变量进行赋值。
如果在构造函数体中对number成员变量赋值,如下:
student(char* pn, char* pa, long long n)
strcpy(name, pn);
strcpy(addr, pa);
number = n;
此时,编译提示异常:
test.cpp: In constructor ‘student::student(char*, char*, long long int)’:
test.cpp:11: error: uninitialized member ‘student::number’ with ‘const’ type ‘const long long int’
test.cpp:15: error: assignment of read-only data-member ‘student::number’
提示number是read-only类型,无法直接赋值初始。需要在构造函数的参数列表中完成,如下:
student(char* pn, char* pa, long long n): number(n)
strcpy(name, pn);
strcpy(addr, pa);
这样才是正确的操作方式。
在类体中声明了某一个成员变量为常成员变量后,该类的所有对象中的该成员变量的值都是不能改变的,就是说,类对象的常成员变量是不可以被修改。
但是,上面我们提到,成员变量可以定义为multable类型,那么,常对象的multable类型的成员变量可以被修改。注意:如果成员变量是const类型,是常成员变量,是不可以被随意修改,所以,这是两个不同的概念。
所以,我们可以归纳总结如下:
- 常对象,可以修改multable类型的成员变量;
- const类型修饰的成员变量,是常成员变量,不可以被修改;
所以,const类型定义的成员变量或者对象是常类型,不可以随意修改,增加了数据保护的机制。
韦凯峰 Linux C/C++ 程序设计教程,Linux 系统编程,Openwrt 系统开发,微信:13926572996,QQ:1523520001,博客:www.mylinux.vip
以上是关于C++常成员变量的主要内容,如果未能解决你的问题,请参考以下文章