Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1542743
  • 博文数量: 596
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 173
  • 用 户 组: 普通用户
  • 注册时间: 2016-07-06 15:50
个人简介

在线笔记

文章分类

全部博文(596)

文章存档

2016年(1)

2015年(104)

2014年(228)

2013年(226)

2012年(26)

2011年(11)

分类: C/C++

2014-12-02 11:19:32


  1. #include <iostream>
  2. using namespace std;

  3. class Student{
  4. public:
  5.     void Register()const {
  6.         m_register = true;
  7.     }
  8. private:
  9.     bool m_register;
  10. };

  11. int main(int argc, char **argv)
  12. {
  13.     Student *s = new Student();
  14.     s->Register();
  15.     return 0;
  16. }
错误,因为Register()被const修饰,但是修改了成员变量m_register

  1. 1.cpp: In member function ‘void Student::Register() const’:
  2. 1.cpp:8:22: error: assignment of member ‘Student::m_register’ in read-only object
解决方法:
为了突破const的限制,使用mutable关键字,允许const修饰的函数允许修改被mutable修饰的成员变量

  1. #include <iostream>
  2. using namespace std;

  3. class Student{
  4. public:
  5.     void Register()const {
  6.         m_register = true;
  7.     }
  8. private:
  9.     mutable bool m_register;//mutable
  10. };

  11. int main(int argc, char **argv)
  12. {
  13.     Student *s = new Student();
  14.     s->Register();
  15.     return 0;


阅读(783) | 评论(0) | 转发(0) |
0

上一篇:c++引用

下一篇:c++函数模板

给主人留下些什么吧!~~