C++ 2.5.1 处理类型:类型别名

Posted 匆忙拥挤repeat

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C++ 2.5.1 处理类型:类型别名相关的知识,希望对你有一定的参考价值。

文章目录

类型别名

传统方式,使用 typedef, cpp11,可使用 using

typedef int mi; //int 别名 mi
mi xa = 88;
using mii = mi; //mi别名mii
mii xb = 88;
cout << (xa == xb) << endl; //output 1

指针类型别名

typedef char* ps; //指向 char 的指针; char* 的别名 ps;
char xx = 'X';
const ps str = &xx; //指向 char的 常量指针
*str = 'F'; //地址指向值可变
//str = &zz; //常量指针的地址不可变,本句会 error
cout << *str << endl;

如果将 ps 代表的 char* ,代入到 表达式 const ps str = &xx; 会得到 const char* str = &xx;
(指针写在紧靠类型后,还是变量前,都没有影响)
在上一节学的,这种形式,就是 常量指针,底层const,无法通过 *指针变量赋值。而实际上这里是可以赋值的。且无法改变指针变量的地址。这倒是符合指针常量,即顶层const的"无法改变变量自身(地址)"的特性了。

const ps *p; //常量指针的指针
p = &str;
cout << **p << endl; //输出 F

//既然 p 是常量指针的指针,重点是,它就是一个指针,可以修改地址,指向一个 char(常量)的地址
char zz = 'Z';
char * q = &zz;  //这里改成常量指针形式 char *const q = &zz; 也是一样的结果
p = &q;
cout << **p << endl; //输出 Z

这种指针类型别名,简直是个坑。

以上是关于C++ 2.5.1 处理类型:类型别名的主要内容,如果未能解决你的问题,请参考以下文章

2.5 处理类型

变量与基本类型

如何在 C++ 类中使用自引用类型和别名

C++ 构建警告:取消引用类型双关指针将破坏严格别名规则

c++学习笔记2--constexpr,类型别名,auto

C++ Primer 5th笔记(chap 16 模板和泛型编程)模板类型别名