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类型,是常成员变量,是不可以被随意修改,所以,这是两个不同的概念。

所以,我们可以归纳总结如下:

  1. 常对象,可以修改multable类型的成员变量;
  2. const类型修饰的成员变量,是常成员变量,不可以被修改;

所以,const类型定义的成员变量或者对象是常类型,不可以随意修改,增加了数据保护的机制。

韦凯峰 Linux C/C++ 程序设计教程,Linux 系统编程,Openwrt 系统开发,微信:13926572996,QQ:1523520001,博客:www.mylinux.vip

以上是关于C++常成员变量的主要内容,如果未能解决你的问题,请参考以下文章

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

成员变量包含引用类型(c++常问问题七)

C++常成员函数

C++常成员函数

C++类中的常成员和静态成员

C++ const 修饰符