C++常对象,常变量,常成员函数详解(转)

  • const修饰的声明数据成员称为常数据成员
  • const修饰的声明成员函数称为常成员函数
  • const修饰的定义对象称为常对象
变量或对象被 const 修饰后其值不能被更新。因此被 const 修饰的变量或对象必须要进行初始化。
(一)用const修饰的声明数据成员称为常数据成员  

   有两种声明形式:

const int   cctwl;
int const   cctwl;
不能省略数据类型,可以添加 public private等访问控制符。  

说明:

  1. 任何函数能对常数据成员赋值
  2. 构造函数对常数据成员进行初始化时也只能通过初始化列表进行。
  3. 常数据成员在初始化时必须赋值或称其必须初始化.
  4. 如果类有多个默认构造函数必须都初始化常数据成员。

通过下面例子来理解常数据成员以上4点。

A、请指出下面程序的错误

C++常对象,常变量,常成员函数详解(转)

错误一:不能对常数据成员在类中初始化、要通过类的构造函数,只有静态常量才能这样初始化。
错误二:没有合适的默认构造函数可用。因为有常量cctwl没有初始化必须初始化所有常数据成员。

更正后结果如下:

C++常对象,常变量,常成员函数详解(转)

B、多个构造函数下的常数据成员

请指出下面程序的错误:

C++常对象,常变量,常成员函数详解(转)
错误一:每个构造函数都要初始化常数据成员,应改为

C++常对象,常变量,常成员函数详解(转)
(二)用const修饰的声明声明成员函数称为常成员函数

声明:<类型标志符>函数名(参数表)const

说明: 

  1. const是函数类型的一部分,在实现部分也要带该关键字。
  2. const关键字可以用于对重载函数的区分。
  3. 常成员函数不能更新任何数据成员,也不能调用该类中没有用const修饰的成员函数,只能常成员函数常数据成员

A、通过例子来理解const是函数类型的一部分,在实现部分也要带该关键字。

C++常对象,常变量,常成员函数详解(转)

B、通过例子来理解const关键字的重载

C++常对象,常变量,常成员函数详解(转)
C、通过例子来理解常成员函数不能更新任何数据成员

C++常对象,常变量,常成员函数详解(转)

D、通过例子来理解

1、常成员函数可以被其他成员函数调用。
2、但是不能调用其他非常成员函数。
3、可以调用其他常成员函数。

C++常对象,常变量,常成员函数详解(转)

(三)const修饰的定义对象称为常对象

常对象是指对象的数据成员的值在对象被调用时不能被改变。常对象必须进行初始化,且不能被更新。不能通过常对象调用普通成员函数,但是可以通过普通对象调用常成员函数。常对象只能调用常成员函数

常对象的声明如下: 

     const   < 类名 >  < 对象名 >
     <类名>  const   <对象名>

两种声明完全一样没有任何区别。

1、通过下面例子来理解常对象:

A、请指出下面程序的错误

C++常对象,常变量,常成员函数详解(转)
PS:

  • 常成员函数可以引用const数据成员,也可以引用非const的数据成员;
  • const数据成员可以被const成员函数引用,也可以被非const的成员函数引用;
  • 常成员函数不能调用另一个非const成员函数。
  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值