假期在家没事干,老家里有本c++ primer,看到typedef关键字
typedef double wages;
typedef wages base,*p;//p是double *的同义词
typedef就是定义一个别名,使复杂的类型名字变得简单明了、易于理解和使用。
后面有一段和指针的使用,我有点没看明白:
我写了如下程序验证对应的类型:
#include <bits/stdc++.h>
using namespace std;
int main()
{
typedef char *pstring;
const pstring cstr = 0;
const pstring *ps;
cout << typeid(cstr).name() <<endl;
cout << typeid(ps).name() <<endl;
return 0;
}
程序输出:
[root workspace]#./a.out
Pc
PKPc
看网上的解释
名字是编译器规定的。具体到这个上面你可以记成pointer(P) const(K) char(c)
这个类型和书上说的对不上呀?
c++filt 可以给出 demangle 的结果,不用猜了:
另外,
typeid
会忽略顶层的 cv-qualifier (const
或volatile
),所以typeid(cstr)
拿到的是char*
, 而不是char*const
。于是应该就可以对上了。expr.typeid#5:
另外,你可以用
std::is_same
来判断类型是否一致:output: