差别
这里会显示出您选择的修订版和当前版本之间的差别。
后一修订版 | 前一修订版上一修订版两侧同时换到之后的修订记录 | ||
blog:cpp:basic_type_alias_and_const [2022/04/17 16:17] – 创建 caodan | blog:cpp:basic_type_alias_and_const [2022/04/17 18:19] – caodan | ||
---|---|---|---|
行 1: | 行 1: | ||
# 基础语法 - 类型别名与const | # 基础语法 - 类型别名与const | ||
+ | |||
+ | ## typedef | ||
+ | |||
+ | 使用关键字 | ||
+ | |||
+ | 例如: | ||
+ | |||
+ | ``` | ||
+ | typedef double wages; | ||
+ | typedef wages base, *p; // base 是double的别名, | ||
+ | ``` | ||
+ | |||
+ | 含有typedef的声明语句定义的不再是变量,而是类型别名。 | ||
+ | |||
+ | |||
+ | ## alias decalration - ' | ||
+ | |||
+ | c++11 中扩展了using的使用场景 (c++11之前 using用于引入命名空间名字) | ||
+ | 使用关键字 using 定义类型别名 | ||
+ | |||
+ | ``` | ||
+ | using wages = double; | ||
+ | using base = wages; | ||
+ | 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 比 typedef 的适用范围广`, | ||
+ | |||
+ | ``` | ||
+ | template < | ||
+ | using Vec = MyVector< | ||
+ | |||
+ | Vec< | ||
+ | ``` | ||
+ | |||
+ | ## 指针、常量与类型别名 | ||
+ | |||
+ | 如果某个类型别名指代的是复合类型或常量,那么把它用到声明语句里会产生意想不到的后果 | ||
+ | |||
+ | 例如下面的声明语句用到了类型pstring, | ||
+ | |||
+ | ``` | ||
+ | using pstring = char *; | ||
+ | const pstring cstr = nullptr; | ||
+ | const char *c_str; | ||
+ | ``` | ||
+ | |||
+ |