mirror of
https://github.com/CnTransGroup/EffectiveModernCppChinese.git
synced 2024-12-25 20:30:21 +08:00
parent
ff3218a1f5
commit
14d64d6dfc
@ -81,7 +81,7 @@ enum Status { good = 0,
|
||||
```
|
||||
这里值的范围从`0`到`0xFFFFFFFF`。除了在不寻常的机器上(比如一个`char`至少有32bits的那种),编译器都会选择一个比`char`大的整型类型来表示`Status`。
|
||||
|
||||
为了高效使用内存,编译器通常在确保能包含所有枚举值的前提下为`enum`选择一个最小的底层类型。在一些情况下,编译器将会优化速度,舍弃大小,这种情况下它可能不会选择最小的底层类型,而是选择对优化大小有帮助的类型。为此,C++98只支持`enum`定义(所有枚举名全部列出来);`enum`声明是不被允许的。这使得编译器能在使用之前为每一个`enum`选择一个底层类型。
|
||||
为了高效使用内存,编译器通常在确保能包含所有枚举值的前提下为`enum`选择一个最小的底层类型。在一些情况下,编译器将会优化速度,舍弃大小,这种情况下它可能不会选择最小的底层类型,但它们当然希望能够针对大小进行优化。为此,C++98只支持`enum`定义(所有枚举名全部列出来);`enum`声明是不被允许的。这使得编译器能在使用之前为每一个`enum`选择一个底层类型。
|
||||
|
||||
但是不能前置声明`enum`也是有缺点的。最大的缺点莫过于它可能增加编译依赖。再次考虑`Status` `enum`:
|
||||
```cpp
|
||||
|
@ -1,6 +1,6 @@
|
||||
## 条款九:优先考虑别名声明而非`typedef`s
|
||||
## 条款九:优先考虑别名声明而非`typedef`
|
||||
|
||||
**Item 9: Prefer alias declarations to `typedef`s**
|
||||
**Item 9: Prefer alias declarations to `typedef`**
|
||||
|
||||
我相信每个人都同意使用STL容器是个好主意,并且我希望[Item18](../4.SmartPointers/item18.md)能说服你让你觉得使用`std:unique_ptr`也是个好主意,但我猜没有人喜欢写上几次 `std::unique_ptr<std::unordered_map<std::string, std::string>>`这样的类型,它可能会让你患上腕管综合征的风险大大增加。
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user