没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
C++ 是 Google 大部分开源项目的主要编程语言。正如每个 C++ 程序员都知道的,C++ 有很多强大的特性,但这种强大不可避免的导致它走向复杂,使代码更容易产生 bug,难以阅读和维护。 Google 经常会发布一些开源项目,意味着会接受来自其他代码贡献者的代码。但是如果代码贡献者的编程风格与 Google 的不一致,会给代码阅读者和其他代码提交这造成不小的困扰。Google 因此发布了这份自己的编程风格,使所有提交代码的人都能获知 Google 的编程风格。 创新工场董事长兼 CEO 李开复曾经对 Google C++ 编码规范给予了极高的评价:“我认为这是地球上最好的一份 C++ 编程规范,没有之一,建议广大国内外 IT 研究使用。” Google C++ 编码规范在线地址:http://google-styleguide.googlecode.com/svn/trunk/cppguide.xml
资源详情
资源评论
Google
Google
Google
Google C++
C++
C++
C++ 编程规范
目录
一、头文件.
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
.4
4
4
4
1.
1.
1.
1. #define
#define
#define
#define 的保护.
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
. 4
4
4
4
2.
2.
2.
2. 头文件依赖.
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
. 4
4
4
4
3.
3.
3.
3. 内联函数.
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
. 5
5
5
5
4.
4.
4.
4. -inl.h
-inl.h
-inl.h
-inl.h 文件.
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
. 5
5
5
5
5.
5.
5.
5. 函数参数顺序(Function
Function
Function
Function Parameter
Parameter
Parameter
Parameter Ordering
Ordering
Ordering
Ordering).
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
.5
5
5
5
6.
6.
6.
6. 包含文件的名称及次序.
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
.6
6
6
6
二、作用域.
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
.7
7
7
7
1.
1.
1.
1. 命名空间(Namespaces
Namespaces
Namespaces
Namespaces).
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
.7
7
7
7
2.
2.
2.
2. 嵌套类(Nested
Nested
Nested
Nested Class
Class
Class
Class).
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
. 9
9
9
9
3.
3.
3.
3. 非成员函数(Nonmember
Nonmember
Nonmember
Nonmember)、静态成员函数(Static
Static
Static
Static Member
Member
Member
Member)和全局函
数(Global
Global
Global
Global Functions
Functions
Functions
Functions).
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
.9
9
9
9
4.
4.
4.
4. 局部变量(Local
Local
Local
Local Variables
Variables
Variables
Variables).
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
.10
10
10
10
5.
5.
5.
5. 全局变量(Global
Global
Global
Global Variables
Variables
Variables
Variables).
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
. 10
10
10
10
三、类.
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
.11
11
11
11
1.
1.
1.
1. 构造函数(Constructor
Constructor
Constructor
Constructor)的职责.
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
.11
11
11
11
2.
2.
2.
2. 默认构造函数(Default
Default
Default
Default Constructors
Constructors
Constructors
Constructors).
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
. 12
12
12
12
3.
3.
3.
3. 明确的构造函数(Explicit
Explicit
Explicit
Explicit Constructors
Constructors
Constructors
Constructors).
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
.12
12
12
12
4.
4.
4.
4. 拷贝构造函数(Copy
Copy
Copy
Copy Constructors
Constructors
Constructors
Constructors).
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
.13
13
13
13
5.
5.
5.
5. 结构体和类(Structs
Structs
Structs
Structs vs.
vs.
vs.
vs. Classes
Classes
Classes
Classes).
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
.14
14
14
14
6.
6.
6.
6. 继承(Inheritance
Inheritance
Inheritance
Inheritance).
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
.14
14
14
14
7.
7.
7.
7. 多重继承(Multiple
Multiple
Multiple
Multiple Inheritance
Inheritance
Inheritance
Inheritance).
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
. 15
15
15
15
8.
8.
8.
8. 接口(Interface
Interface
Interface
Interface).
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
. 15
15
15
15
9.
9.
9.
9. 操作符重载(Operator
Operator
Operator
Operator Overloading
Overloading
Overloading
Overloading).
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
.16
16
16
16
10.
10.
10.
10. 存取控制(Access
Access
Access
Access Control
Control
Control
Control).
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
.16
16
16
16
11.
11.
11.
11. 声明次序(Declaration
Declaration
Declaration
Declaration Order
Order
Order
Order).
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
.17
17
17
17
12.
12.
12.
12. 编写短小函数(Write
Write
Write
Write Short
Short
Short
Short Functions
Functions
Functions
Functions).
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
.17
17
17
17
四、Google
Google
Google
Google 特有的风情.
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
. 18
18
18
18
1.
1.
1.
1. 智能指针(Smart
Smart
Smart
Smart Pointers
Pointers
Pointers
Pointers).
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
. 18
18
18
18
五、其他 C++
C++
C++
C++特性.
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
. 19
19
19
19
1.
1.
1.
1. 引用参数(Reference
Reference
Reference
Reference Arguments
Arguments
Arguments
Arguments).
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
. 19
19
19
19
2.
2.
2.
2. 函数重载(Function
Function
Function
Function Overloading
Overloading
Overloading
Overloading).
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
.19
19
19
19
3.
3.
3.
3. 缺省参数(Default
Default
Default
Default Arguments
Arguments
Arguments
Arguments).
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
. 20
20
20
20
4.
4.
4.
4. 变长数组和 alloca
alloca
alloca
alloca(Variable-Length
Variable-Length
Variable-Length
Variable-Length Arrays
Arrays
Arrays
Arrays and
and
and
and alloca()
alloca()
alloca()
alloca()).
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
. 20
20
20
20
5.
5.
5.
5. 友元(Friends
Friends
Friends
Friends).
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
.20
20
20
20
6.
6.
6.
6. 异常(Exceptions
Exceptions
Exceptions
Exceptions).
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
.20
20
20
20
7.
7.
7.
7. 运行时类型识别(Run-Time
Run-Time
Run-Time
Run-Time Type
Type
Type
Type Information,
Information,
Information,
Information, RTTI
RTTI
RTTI
RTTI).
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
. 22
22
22
22
8.
8.
8.
8. 类型转换(Casting
Casting
Casting
Casting).
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
. 22
22
22
22
9.
9.
9.
9. 流(Streams
Streams
Streams
Streams).
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
.23
23
23
23
10.
10.
10.
10. 前置自增和自减(Preincrement
Preincrement
Preincrement
Preincrement and
and
and
and Predecrement
Predecrement
Predecrement
Predecrement).
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
.24
24
24
24
11.
11.
11.
11. const
const
const
const 的使用(Use
Use
Use
Use of
of
of
of const
const
const
const).
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
.24
24
24
24
12.
12.
12.
12. 整型(Integer
Integer
Integer
Integer Types
Types
Types
Types).
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
.25
25
25
25
13.
13.
13.
13. 64
64
64
64 位下的可移植性(64-bit
64-bit
64-bit
64-bit Portability
Portability
Portability
Portability).
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
. 26
26
26
26
14.
14.
14.
14. 预处理宏(Preprocessor
Preprocessor
Preprocessor
Preprocessor Macros
Macros
Macros
Macros).
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
.27
27
27
27
15.
15.
15.
15. 0
0
0
0 和 NULL
NULL
NULL
NULL(0
0
0
0 and
and
and
and NULL
NULL
NULL
NULL).
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
.27
27
27
27
16.
16.
16.
16. sizeof
sizeof
sizeof
sizeof(sizeof
sizeof
sizeof
sizeof).
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
.28
28
28
28
17.
17.
17.
17. Boost
Boost
Boost
Boost 库(Boost
Boost
Boost
Boost).
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
. 28
28
28
28
六、命名约定.
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
.29
29
29
29
1.
1.
1.
1. 通用命名规则(General
General
General
General Naming
Naming
Naming
Naming Rules
Rules
Rules
Rules).
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
.29
29
29
29
2.
2.
2.
2. 文件命名(File
File
File
File Names
Names
Names
Names).
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
. 30
30
30
30
3.
3.
3.
3. 类型命名(Type
Type
Type
Type Names
Names
Names
Names).
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
.31
31
31
31
4.
4.
4.
4. 变量命名(Variable
Variable
Variable
Variable Names
Names
Names
Names).
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
.31
31
31
31
5.
5.
5.
5. 常量命名(Constant
Constant
Constant
Constant Names
Names
Names
Names).
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
. 31
31
31
31
6.
6.
6.
6. 函数命名(Function
Function
Function
Function Names
Names
Names
Names).
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
.32
32
32
32
7.
7.
7.
7. 命名空间(Namespace
Namespace
Namespace
Namespace Names
Names
Names
Names).
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
. 32
32
32
32
8.
8.
8.
8. 枚举命名(Enumerator
Enumerator
Enumerator
Enumerator Names
Names
Names
Names).
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
.32
32
32
32
9.
9.
9.
9. 宏命名(Macro
Macro
Macro
Macro Names
Names
Names
Names).
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
.33
33
33
33
10.
10.
10.
10. 命名规则例外(Exceptions
Exceptions
Exceptions
Exceptions to
to
to
to Naming
Naming
Naming
Naming Rules
Rules
Rules
Rules).
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
.33
33
33
33
七、注释.
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
.34
34
34
34
1.
1.
1.
1. 注释风格(Comment
Comment
Comment
Comment Style
Style
Style
Style).
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
.34
34
34
34
2.
2.
2.
2. 文件注释(File
File
File
File Comments
Comments
Comments
Comments).
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
.34
34
34
34
3.
3.
3.
3. 类注释(Class
Class
Class
Class Comments
Comments
Comments
Comments).
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
.34
34
34
34
4.
4.
4.
4. 函数注释(Function
Function
Function
Function Comments
Comments
Comments
Comments).
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
. 35
35
35
35
5.
5.
5.
5. 变量注释(Variable
Variable
Variable
Variable Comments
Comments
Comments
Comments).
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
.36
36
36
36
6.
6.
6.
6. 实现注释(Implementation
Implementation
Implementation
Implementation Comments
Comments
Comments
Comments).
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
. 37
37
37
37
7.
7.
7.
7. 标点、拼写和语法(Punctuation,
Punctuation,
Punctuation,
Punctuation, Spelling
Spelling
Spelling
Spelling and
and
and
and Grammar
Grammar
Grammar
Grammar).
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
. 38
38
38
38
8.
8.
8.
8. TODO
TODO
TODO
TODO 注释(TODO
TODO
TODO
TODO Comments
Comments
Comments
Comments).
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
.38
38
38
38
八、格式.
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
.39
39
39
39
1.
1.
1.
1. 行长度(Line
Line
Line
Line Length
Length
Length
Length).
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
.39
39
39
39
2.
2.
2.
2. 非 ASCII 字符(Non-ASCII
Non-ASCII
Non-ASCII
Non-ASCII Characters
Characters
Characters
Characters).
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
.40
40
40
40
3.
3.
3.
3. 空格还是制表位(Spaces
Spaces
Spaces
Spaces vs.
vs.
vs.
vs. Tabs
Tabs
Tabs
Tabs).
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
. 40
40
40
40
4.
4.
4.
4. 函数声明与定义(Function
Function
Function
Function Declarations
Declarations
Declarations
Declarations and
and
and
and Definitions
Definitions
Definitions
Definitions).
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
.40
40
40
40
5.
5.
5.
5. 函数调用(Function
Function
Function
Function Calls
Calls
Calls
Calls).
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
. 42
42
42
42
6.
6.
6.
6. 条件语句(Conditionals
Conditionals
Conditionals
Conditionals).
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
. 43
43
43
43
7.
7.
7.
7. 循环和开关选择语句(Loops
Loops
Loops
Loops and
and
and
and Switch
Switch
Switch
Switch Statements
Statements
Statements
Statements).
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
.44
44
44
44
8.
8.
8.
8. 指针和引用表达式(Pointers
Pointers
Pointers
Pointers and
and
and
and Reference
Reference
Reference
Reference Expressions
Expressions
Expressions
Expressions).
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
.45
45
45
45
9.
9.
9.
9. 布尔表达式(Boolean
Boolean
Boolean
Boolean Expressions
Expressions
Expressions
Expressions).
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
. 46
46
46
46
10.
10.
10.
10. 函数返回值(Return
Return
Return
Return Values
Values
Values
Values).
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
. 46
46
46
46
11.
11.
11.
11. 变量及数组初始化(Variable
Variable
Variable
Variable and
and
and
and Array
Array
Array
Array Initialization
Initialization
Initialization
Initialization).
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
. 46
46
46
46
12.
12.
12.
12. 预处理指令(Preprocessor
Preprocessor
Preprocessor
Preprocessor Directives
Directives
Directives
Directives).
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
. 46
46
46
46
13.
13.
13.
13. 类格式(Class
Class
Class
Class Format
Format
Format
Format).
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
.47
47
47
47
14.
14.
14.
14. 初始化列表(Initializer
Initializer
Initializer
Initializer Lists
Lists
Lists
Lists).
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
. 48
48
48
48
15.
15.
15.
15. 命名空间格式化(Namespace
Namespace
Namespace
Namespace Formatting
Formatting
Formatting
Formatting).
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
.48
48
48
48
16.
16.
16.
16. 水平留白(Horizontal
Horizontal
Horizontal
Horizontal Whitespace
Whitespace
Whitespace
Whitespace).
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
. 49
49
49
49
17.
17.
17.
17. 垂直留白(Vertical
Vertical
Vertical
Vertical Whitespace
Whitespace
Whitespace
Whitespace).
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
. 50
50
50
50
九、规则之例外.
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
.52
52
52
52
1.
1.
1.
1. 现有不统一代码(Existing
Existing
Existing
Existing Non-conformant
Non-conformant
Non-conformant
Non-conformant Code
Code
Code
Code).
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
.52
52
52
52
2.
2.
2.
2. Windows
Windows
Windows
Windows 代码(Windows
Windows
Windows
Windows Code
Code
Code
Code).
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
.52
52
52
52
十、团队合作.
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
..
.
.
.53
53
53
53
一、头文件
通常,每一个.cc 文件(C++的源文件)都有一个对应的.h 文件(头文件),也有一些例
外,如单元测试代码和只包含 main()的.cc 文件。
正确使用头文件可令代码在可读性、文件大小和性能上大为改观。
下面的规则将引导你规避使用头文件时的各种麻烦。
1.
1.
1.
1. #define
#define
#define
#define 的保护
的保护
的保护
的保护
所有头文件都应该使用#define 防止头文件被多重包含(multiple inclusion
)
,命名格式
当是:
<PROJECT>
_
<PATH>
_
<FILE>
_H_
为保证唯一性,头文件的命名应基于其所在项目源代码树的全路径。例如,项目 foo 中的头
文件 foo/src/bar/baz.h 按如下方式保护:
#ifndef FOO_BAR_BAZ_H_
#define FOO_BAR_BAZ_H_
...
#endif // FOO_BAR_BAZ_H_
2.
2.
2.
2. 头文件依赖
头文件依赖
头文件依赖
头文件依赖
使用前置声明(forward declarations)尽量减少.h 文件中#include 的数量。
当一个头文件被包含的同时也引入了一项新的
依赖(
dependency
)
,只要该头文件被修
改,
代码就要重新编译。如果你的头文件包含了其他头文件,这些头文件的任何改变也将导致那
些包含了你的头文件的代码重新编译。因此,我们宁可尽量少包含头文件,尤其是那些包含
在其他头文件中的。
使用前置声明可以显著减少需要包含的头文件数量。举例说明:头文件中用到类 File
,但
不
需要访问 File 的声明,则头文件中只需前置声明 class File;无需#include
"file/base/file.h"。
在头文件如何做到使用类 Foo 而无需访问类的定义?
1) 将数据成员类型声明为 Foo *或 Foo &;
2) 参数、返回值类型为 Foo 的函数只是声明(但不定义实现);
3) 静态数据成员的类型可以被声明为 Foo,因为静态数据成员的定义在类定义之外。
另一方面,如果你的类是 Foo 的子类,或者含有类型为 Foo 的非静态数据成员,则必须为
之包含头文件。
有时,使用指针成员(
pointer members,如果是 scoped_ptr 更好
)替 代 对 象 成 员(
object
members)的确更有意义。然而,这样的做法会降低代码可读性及执行效率。如果仅仅为
了少包含头文件,还是不要这样替代的好。
当然,.cc 文件无论如何都需要所使用类的定义部分,自然也就会包含若干头文件。
译者注:能依赖声明的就不要依赖定义。
3.
3.
3.
3. 内联函数
内联函数
内联函数
内联函数
只有当函数只有 10 行甚至更少时才会将其定义为内联函数(inline function)。
定义(Definition
Definition
Definition
Definition):当函数被声明为内联函数之后,编译器可能会将其内联展开,无需
按通常的函数调用机制调用内联函数。
优点:当函数体比较小的时候,内联该函数可以令目标代码更加高效。对于存取函数
(accessor、mutator)以及其他一些比较短的关键执行函数。
缺点:滥用内联将导致程序变慢,内联有可能是目标代码量或增或减,这取决于被内联的函
数的大小。内联较短小的存取函数通常会减少代码量,但内联一个很大的函数(译者注:如
果编译器允许的话)将戏剧性的增加代码量。在现代处理器上,由于更好的利用指令缓存
(instruction cache),小巧的代码往往执行更快。
结论:
一个比较得当的处理规则是,不要内联超过 10 行的函数。对于析构函数应慎重对
待,
析构函数往往比其表面看起来要长,因为有一些隐式成员和基类析构函数(如果有的话)被
调用!
另一有用的处理规则:内联那些包含循环或 switch 语句的函数是得不偿失的,除非在大多
数情况下,这些循环或 switch 语句从不执行。
重要的是,虚函数和递归函数即使被声明为内联的也不一定就是内联函数。通常,递归函数
不应该被声明为内联的(译者注:递归调用堆栈的展开并不像循环那么简单,比如递归层数
在编译时可能是未知的,大多数编译器都不支持内联递归函数)。析构函数内联的主要原因
是其定义在类的定义中,为了方便抑或是对其行为给出文档。
4.
4.
4.
4. -inl.h
-inl.h
-inl.h
-inl.h 文件
文件
文件
文件
复杂的内联函数的定义,应放在后缀名为-inl.h 的头文件中。
在头文件中给出内联函数的定义,可令编译器将其在调用处内联展开。然而,实现代码应完
全放到.cc 文件中,我们不希望.h 文件中出现太多实现代码,除非这样做在可读性和效率上
有明显优势。
如果内联函数的定义比较短小、逻辑比较简单,其实现代码可以放在.h 文件中。例如,存
取函数的实现理所当然都放在类定义中。出于实现和调用的方便,较复杂的内联函数也可以
放到.h 文件中,如果你觉得这样会使头文件显得笨重,还可以将其分离到单独的-inl.h 中
。
这样即把实现和类定义分离开来,当需要时包含实现所在的-inl.h 即可。
-inl.h 文件还可用于函数模板的定义,从而使得模板定义可读性增强。
要提醒的一点是,-inl.h 和其他头文件一样,也需要#define 保护。
5.
5.
5.
5. 函数参数顺序(
函数参数顺序(
函数参数顺序(
函数参数顺序(Function
Function
Function
Function Parameter
Parameter
Parameter
Parameter Ordering
Ordering
Ordering
Ordering)
)
)
)
定义函数时,参数顺序为:输入参数在前,输出参数在后。
剩余52页未读,继续阅读
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论1
最新资源