winston 发表于 2012-5-23 21:19:57

C++关键字

面试过程中,一些面试官对C++一些特殊关键字很关注;
整理了一些比较有说头的关键字


[*]explicit
用来声明构造函数,被声明的构造函数为显示构造函数,不能在隐式转换中使用。C++中一个参数的构造函数或除第一个参数外均有默认值的多参构造函数,有两个作用:1、构造对象;2、默认且隐式的类型转换操作符。
1 class foo
2 {
3 public:
4   explicit foo( int a )
5         : _member( a )
6   {}
7
8   int _member;
9 };
10
11 int bar( const foo & f )
12 {
13   return f._member;
14 }
15
16 bar( 1 ); // 失败, explicit禁止int到foo的隐式(implicit)类型转换.
17
18 bar( foo( 1 ) ); // 正确, 显式调用explicit构造函数.
19
20 bar( static_cast<foo>( 1 ) );// 正确, 通过static_cast调用explicit构造函数.
21
22 bar( foo( 1.0 ) );// 正确, 显式调用explicit构造函数, 参数自动从浮点转换成整型.



[*]mutable
用来声明一个成员变量,被mutable声明的成员变量,可以在被const修饰的成员函数中修改。mutable不可与const、static同时使用。
1 class foo
2 {
3 public:
4   foo()
5         : _member(0)
6   {}
7
8   void ExChange( int a ) const
9   {
10         _member = a;
11   }
12
13   mutable int _member;
14 }


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




iq50 发表于 2012-7-5 16:49:12

最不记得怎么写,但是又常用的就是这几个,还好VS有提示
页: [1]
查看完整版本: C++关键字