我可以: 邀请好友来看>>
ZOL星空(中国) > 技术星空(中国) > C/C++星空(中国) > C++之const成员函数
帖子很冷清,卤煮很失落!求安慰
返回列表
签到
手机签到经验翻倍!
快来扫一扫!

C++之const成员函数

64浏览 / 0回复

wiki

wiki

0
精华
15
帖子

等  级:Lv.5
经  验:4170
  • Z金豆: 0

    千万礼品等你来兑哦~快点击这里兑换吧~

  • 城  市:陕西
  • 注  册:2008-07-07
  • 登  录:2015-06-01
发表于 2010-09-30 11:56:05
电梯直达 确定
楼主

  前几天在看C++C#里面是没有这个说法的,在此记录一下!以后写C++代码待注意了,凡是不用修改类的成员的函数尽量定义为const函数!比如在取成员变量的值的时候,这样也可以尽量避免bug,而且是在编译的时候就不能通过!

  另外就是const函数是不能调用非const函数的,即是是哪个非const函数体内没有修改成员变量的值也不行!例如下面的代码编译会不通过:

  代码

  #include

  using namespace std;

  class studentInfo

  {

  public:

  void setScore(int score){this->score=score;}

  int getScore() const{printScore();return score;}

  void printScore(){cout<

  private:

  int score;

  };

  int main(void)

  {

  return -1;

  }

  如果非要在const成员函数里面修改成员变量的话该怎么做了?上网查了一下主要有一下两种方法:

  1. 通过this指针进行类型强制转换实现

  类似于下面这样的方法:

  int getScore() const

  {

  (const_cast(this))->score+=1;

  return score;

  }

  2. 将成员变量定义为mutable

  类似于下面这样:

  mutable int score;

  上面这句代码就告诉编译器成员变量r可以在const函数体内修改其值!

  其实我觉得既然我们已经将函数定义为const了就没有必要再在函数体内修改成员变量的值了,不然就失去const函数的意义了,也就没必要将其定义为const函数!个人意见!

高级模式
星空(中国)精选大家都在看24小时热帖7天热帖大家都在问最新回答

针对ZOL星空(中国)您有任何使用问题和建议 您可以 联系星空(中国)管理员查看帮助  或  给我提意见

快捷回复 APP下载 返回列表