C++ 11 函数适配器 bind
参考博客:
C++11新特性:参数绑定——std::bind - 莫水千流 - 博客园 (cnblogs.com)
【C++】C++11的std::function和std::bind用法详解_c++11 新增了 std::function、std::bind-CSDN博客
enum class
我们在 C++
中常使用 enum
来给同一类别中的多个值命名,如:给颜色中的 0, 1, 2, 3, ...
值命名,可以用下面的写法:
1 | enum Color { |
C++
的 C98
标准称 enum
为不限范围的枚举型别。因为 C++
中的枚举量会泄露到包含这个枚举类型的作用域内,在这个作用域内就不能有其他实体取相同的名字。我们可以通过一段代码来演示这一现象:
1 |
|
当我们编译时,会出现重定义错误:error: 'auto GRAY' redeclared as different kind of entity
。
为了解决这一问题,C++ 11
新标准提供了 enum Class
枚举类。对于上面的代码,我们再一次做出演示:
1 |
|
此时,输出 3
和 10
。可以看到在全局作用域的 GRAY
被赋值成了 10
,而枚举类中的 GRAY
还是 3
,且必须使用作用域限定符进行访问。 这里可以看到我使用了一个 static_cast<int> (Color::GRAY)
进行了一个强制类型转换,这是因为 enum
不支持隐式类型转换。如果想要进行转换,则必须使用 static_cast
进行强制类型转换。