blog:cpp:basic_type_alias_and_const

基础语法 - 类型别名与const

使用关键字 typedef 定义类型别名

例如:

typedef double wages;   // wages 是 double的别名
typedef wages base, *p; // base 是double的别名, p是double *的别名

含有typedef的声明语句定义的不再是变量,而是类型别名。

c++11 中扩展了using的使用场景 (c++11之前 using用于引入命名空间名字) 使用关键字 using 定义类型别名

using wages = double;   // wages 是 double的别名
using base  = wages;    // base 是 double的别名
using p     = wages *;  // p 是 double *的别名
using pstring = char *; // pstring 是 char * 的别名

定义函数指针:

typedef void  (*FP)(int, const std::string &);
using FP = void (*)(int, const std::string &);  // 使用using方式更自然,易懂

using 比 typedef 的适用范围广, 例如在using 可以在模板别名中使用,但using却不行。

template <typename T>
using Vec = MyVector<T, MyAlloc<T>>;

Vec<int> vec;

如果某个类型别名指代的是复合类型或常量,那么把它用到声明语句里会产生意想不到的后果

例如下面的声明语句用到了类型pstring, 它实际上是类型 char * 的别名

using pstring = char *;
const pstring cstr = nullptr;   // cstr 是 指向字符 的 常量指针 
const char *c_str;              // c_str是 指向常量字符 的 指针
  • blog/cpp/basic_type_alias_and_const.1650190749.txt.gz
  • 最后更改: 2022/04/17 18:19
  • caodan