弄个变量类别,C++能遇到的坑都比别人多
类型别名
- 还是那句话C++做什么事情都可以很多方法,连类型别名也是。
typedef int wage;``using wage = int
- 在使用类型别名进行声明,不要尝试用原定义替换,例如
typedef char *pstring;const pstring cstr=0;
,cstr是个指向char的常量指针。如果用原定义替换就是const char *cstr
那么cstr就是一个指向const char
的指针
auto类型说明符
- 使用
auto
可以让编译器来推算变量的类型,但前提是变量有初始值,我想这个功能类似于一些动态语言的类型推算,只是auto依赖的是编译器 - 使用
auto
推算类型,会把顶层const
忽略掉,所以如果要定义则需要手动添加const auto
decltype类型指示符
-
decltype的功能跟上面的那个很像,但是差别在于不需要用表达式来初始化
-
decltype不会去对变量的类型进行处理,例如不忽略顶层const和引用
-
decltype使用变量,如果在变量上加括号得到的将是不一样的结果,因为加了括号,decltype就把变量认为是表达式,那么变量是一种可以作为赋值语句左值的特殊表达式,所以就会得到引用,例如
decltype(i)和decltype((i))
是不一样。int a = 3,b = 4; decltype(a) c = a; decltype((b)) d = a; ++c; ++d;
写这样的代码感觉就是自己跟自己玩捉迷藏,最后所有的变量都是4
部分文字来自《C++ Primer》
写于2015-01-08
网友评论