目录
类型别名
什么是类型别名
类型别名是一个名字,使用类型别名可以让复杂的类型名字变得简单明了、易于理解和使用,还有助于程序员清楚地知道使用该类型的真实目的。
类型别名和类型的名字等价,只要是类型的名字能出现的地方,就能使用类型别名
目前有两种定义类型别名的方法,分别是typedef
和using
typedef关键字
关键字typedef作为声明语句中的基本数据类型的一部分出现。含有typedef的声明语句定义的不再是变量而是类型别名。
typedef的使用
- typedef普通类型
typedef unsigned int u_int;//u_int是 unsigned int的同义词
typedef u_int *p;//p是unsigned int*的同义词
/*================使用===================*/
u_int i=10; //相当于unsigned int i=10
p p1=&i; //相当于unsigned int*p1=&i
int j=20;
p1=&j; //错误,不能将int*转换为unsigned int*
- typedef结构体
可以使用 typedef 来为用户自定义的数据类型取一个新的名字。比如,可以对结构体使用 typedef 来给定义的数据类型起一个新名字,然后使用这个新名字来直接定义结构变量。
typedef struct people {
string name;
int age;
string gender;
}student;
/*================使用===================*/
student stud1;//相当于people stud1
-
typedef函数指针
typedef经常用于替换一些复杂的函数指针,说到函数指针,就必须先了解一下函数指针和指针函数。在一文搞懂函数指针这篇博客中详细介绍了什么是函数指针,什么是指针函数。回到typedef上,用typedef来定义这些复杂的类型,比如上面的函数指针
声明格式:typedef 返回类型 (*新名字) (参数表)
typedef int(*func)(int); //定义int(*)(int)的函数指针的别名为func func pfun; //直接用别名func定义int(*)(int)类型的变量 int getVal(int n) //定义一个形参为int,返回值为int的函数 { cout << n << endl; return n; } /*================使用===================*/ int main() { pfun = getVal; //把函数赋给指针 (*pfun)(5); //调用函数getVal,输出5 return 0; }
using关键字
using的使用
-
使用命名空间
为了防止名字冲突从而有了命名空间,我们可以通过使用using声明来指定使用哪个命名空间,这样后面再使用到该命名空间中的内容则无需加前缀命名空间名字::
using namespace std;//释放整个命名空间到当前作用域 using std::cout; //释放某个变量到当前作用域
-
类型别名
using起别名的作用和typedef十分相似,都是使用别名声明来定义类型的别名,其使用方式也十分简单/* using 别名=原先类型 */ using student =</