差别
这里会显示出您选择的修订版和当前版本之间的差别。
两侧同时换到之前的修订记录 前一修订版 | |||
blog:cpp:basic_type_alias_and_const [2022/04/17 18:19] – caodan | blog:cpp:basic_type_alias_and_const [2022/04/17 18:35] (当前版本) – [指针、常量与类型别名] caodan | ||
---|---|---|---|
行 50: | 行 50: | ||
``` | ``` | ||
using pstring = char *; | using pstring = char *; | ||
- | const pstring cstr = nullptr; | + | const pstring cstr = nullptr; |
- | const char *c_str; | + | const char *c_str; |
``` | ``` | ||
+ | cstr的定义相当于: | ||
+ | ``` | ||
+ | char szBuf[1024] = " | ||
+ | cstr = szBuf; | ||
+ | c_str = szBuf; // 正确 | ||
+ | ``` | ||
+ | |||
+ | 遇到一条使用了类型别名的声明语句时,人们往往会错误的尝试把类型别名替换成它原本的样子,通过上述的例子可以看到,这种理解是错误的。 | ||
+ | |||
+ | 简单替换的结果是 `const char` 成了基本数据类型,这两种声明的含义是截然不同的。 | ||
+ | |||
+ | ``` | ||
+ | const pstring *ps; // ps是一个指针,它的对象是一个指向char的常量指针。ps相当于 `char* const * ps` | ||
+ | //ps = & | ||
+ | ps = const_cast< | ||
+ | ``` |