设为首页 加入收藏

TOP

13.1.8 修饰符
2013-10-07 01:14:00 来源: 作者: 【 】 浏览:69
Tags:13.1.8 修饰

13.1.8  修饰符

修饰符就是对类的成员的限定符,主要有const和mutable两种。const表示不希望类的对象或类的属性在程序运行的过程中被修改,mutable表示总是可以修改。当把一个类声明为const时,它的所有成员属性都将自动成为const型。但有时又需要修改某个const对象中的属性,这时就需要用到mutable修饰符。

【示例13-13】 演示const和mutable的使用方法。

  1. #include "stdafx.h"  
  2. class A  
  3. {  
  4.     int ax;  
  5.     mutable int ay;             //ay总是可以修改的  
  6. public :  
  7.     A(int i,int j);  
  8.     void show();                //非常函数  
  9.     void show() const;          //常函数  
  10.     void modifyY(int y) const;  //常函数  
  11. };  
  12. A::A(int i,int j)  
  13. {  
  14. ax=i;  
  15. ay=j;  
  16. }  
  17. void  A::show()   
  18. {  
  19.     cout<<"show()函数调用"<<endl;  
  20.     cout<<ax<<endl;  
  21.     cout<<ay<<endl;  
  22. }  
  23. void  A::show() const 
  24. {  
  25.     cout<<"const show()函数调用"<<endl;  
  26. cout<<ax<<endl;  
  27.     cout<<ay<<endl;  
  28. }  
  29. void A::modifyY(int y) const 
  30. {  
  31.     ay=y;  
  32. }  
  33. void main()  
  34. {  
  35.     const  A a1(5,10);  
  36.     a1.show();  
  37.     a1.modifyY(8);  
  38.     a1.show();  
  39.     A a2(10,15);  
  40.     a2.show();  
  41.     a2.modifyY(30);  
  42.     a2.show();  

分析:在上面程序中,在类A中声明了两个show()函数。根据创建对象的不同,系统会自动选择调用不同的函数。当调用了const a1对象的show()函数时,系统自动选择const成员函数。当调用非const a2对象时,系统自动选择非const成员函数。由于a1被定义为const型,因此必须将ay声明为mutable的,否则调用modifyY函数修改ay的值时将会报错,而调用a2的modify函数时,则不会。因此,该示例的输出结果如下所示。

  1. const show()函数调用  
  2. 5  
  3. 10  
  4. const show()函数调用  
  5. 5  
  6. 8  
  7. show()函数调用  
  8. 10  
  9. 15  
  10. show()函数调用  
  11. 10  
  12. 30 
【责任编辑:云霞 TEL:(010)68476606】

回书目   上一节   下一节

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇13.1.1 类的声明 下一篇13.1.6 静态成员

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: