找回密码
 用户注册

QQ登录

只需一步,快速开始

查看: 7334|回复: 1

C++关键字

[复制链接]
发表于 2012-5-23 21:19:57 | 显示全部楼层 |阅读模式
面试过程中,一些面试官对C++一些特殊关键字很关注;
整理了一些比较有说头的关键字


  • explicit
用来声明构造函数,被声明的构造函数为显示构造函数,不能在隐式转换中使用。
C++中一个参数的构造函数或除第一个参数外均有默认值的多参构造函数,有两个作用:1、构造对象;2、默认且隐式的类型转换操作符。

  1. 1 class foo
  2. 2 {
  3. 3 public:
  4. 4     explicit foo( int a )
  5. 5         : _member( a )
  6. 6     {}
  7. 7
  8. 8     int _member;
  9. 9 };
  10. 10
  11. 11 int bar( const foo & f )
  12. 12 {
  13. 13     return f._member;
  14. 14 }
  15. 15
  16. 16 bar( 1 ); // 失败, explicit禁止int到foo的隐式(implicit)类型转换.
  17. 17
  18. 18 bar( foo( 1 ) ); // 正确, 显式调用explicit构造函数.
  19. 19
  20. 20 bar( static_cast<foo>( 1 ) );  // 正确, 通过static_cast调用explicit构造函数.
  21. 21
  22. 22 bar( foo( 1.0 ) );  // 正确, 显式调用explicit构造函数, 参数自动从浮点转换成整型.
复制代码



  • mutable
用来声明一个成员变量,被mutable声明的成员变量,可以在被const修饰的成员函数中修改。
mutable不可与const、static同时使用。

  1. 1 class foo
  2. 2 {
  3. 3 public:
  4. 4     foo()
  5. 5         : _member(0)
  6. 6     {}
  7. 7
  8. 8     void ExChange( int a ) const
  9. 9     {
  10. 10         _member = a;
  11. 11     }
  12. 12
  13. 13     mutable int _member;
  14. 14 }
复制代码


  • volatile
    用以声明一个变量,被volatile声明的变量意味着有可能被某些编译器未知的因素更改,因此编译器不会对其做任何优化操作。
    从而可以提供对特殊地址的稳定访问,多用于嵌入式编程中。




发表于 2012-7-5 16:49:12 | 显示全部楼层
最不记得怎么写,但是又常用的就是这几个,还好VS有提示
您需要登录后才可以回帖 登录 | 用户注册

本版积分规则

Archiver|手机版|小黑屋|ACE Developer ( 京ICP备06055248号 )

GMT+8, 2024-12-22 12:11 , Processed in 0.019993 second(s), 6 queries , Redis On.

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表