在 C++ 中,在以下情况下"using"如何使用关键字?

how is the keyword "using" used in the following case in c++?

本文关键字:using 何使用 关键字 情况下 C++      更新时间:2023-10-16

案例1:

using unumber = unsigned long;
unumber uvalue {};

案例2:

using udigit_t = unsigned char; 
using ubigvalue_t = vector<udigit_t>; 
ubigvalue_t ubig_value; 

在这种情况下,using是否可以像推断类型一样工作?

基本上,usingtypedef(除其他事项(以来的另一个关键字。两者都用于创建类型的别名。因此,

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;};