在 C++ 中,在以下情况下"using"如何使用关键字?
how is the keyword "using" used in the following case in c++?
案例1:
using unumber = unsigned long;
unumber uvalue {};
案例2:
using udigit_t = unsigned char;
using ubigvalue_t = vector<udigit_t>;
ubigvalue_t ubig_value;
在这种情况下,using
是否可以像推断类型一样工作?
基本上,using
是typedef
(除其他事项(以来的另一个关键字。两者都用于创建类型的别名。因此,
using udigit_t = unsigned char;
和
typedef unsigned char udigit_t;
是同等的表达式,它可以使您使用udigit_t
的意义与您写unsigned char
相同的意义(有些陷阱(。有关更多信息,请在此处查看:
类型别名,别名模板。
using
可以用作typedef
的替代方案,用于定义C 11中的类型别名(无C 03/98(。在某些情况下,您的代码更容易查看。比较这些示例。
typedef unsigned char byte, *pbyte, &rbyte;
using byte = unsigned char;
using pbyte = unsigned char*;
using rbyte = unsigned char &;
typedef int (*fun)(int, int);
using fun = int (*)(int, int);
// And when later...
fun f = [&](int a, int b){return a + b;};
在这种情况下, using
dis 不是陈述一种推断类型,而是一种明确定义的类型。要让编译器推断并确定变量的类型,请使用auto
(仅C 11(。所以你可以写
auto f = [](){return 1;};
// No more need to write this below
int (*f)(void) = [](){return 1;};
相关文章:
- 为什么我需要做'using namespace std'而不是"使用 std::cout"?
- 在"template"和函数声明之间使用:template<typename trait> using tr = base_trait<trait> void fn(tr::t
- 是否可以使用 using 将基类中的公共成员重新声明为派生类中的私有成员?
- 是否建议在函数中使用using关键字
- 我可以在using声明中正确使用C++20概念吗
- 如何使用 "using" 关键字定义函数原型/签名
- C++使用 using 关键字键入别名
- 如何使用模板声明"std::array" "using"
- 在 C++ 中,在以下情况下"using"如何使用关键字?
- 如何在C++中使用"using"关键字
- 为什么名称查找在找到使用 using 指令隐式声明的实体时不停止?
- 通过派生类模板参数指定基类模板参数之一。如何使用基类的 using 声明
- 使用 "using" 关键字继承基类的复制和移动构造函数
- 使用包含该结构内部结构的 using 定义
- 在C++中使用带有预编译标头的 #using < System.dll>
- 为什么我们应该在使用"using namespace std"时使用"#include<iostream>"?
- 使用 "using declaration" 扩展非类型模板参数包(模板可变参数编译时 SignalSlot 实现)
- 如何在代码中使用 STD 而不包含"using namespace std"?
- 在 C++20 中使用 CRTP 派生"using"
- 'using'语句使用 g++ 编译,使用 clang 编译失败