2.基本内置类型
- 带符号数与无符号数操作时,会变成无符号数。如,-1会变成255
- 定义于函数体内的内置类型的对象如果没有初始化,则其值未定义。在函数体外默认是0。类的对象如果没有显示初始化,其值由类确定。
const int *p=nullptr;//p是一个指向整形常量的指针
constexpr int *q=nullptr;//q是一个指向整形的常量指针
typedef char *ps;
const ps cstr=0;//常量指针
const ps *p;//指向常量指针
//不能把别名带入理解,是错误的
- auto会忽略顶层const,底层const会保留。auto赋值等号右边是一个引用时,auto类型是没有引用的。
- decltype返回操作数的数据类型。如果表达式是一个变量,会返回变量的类型(包括const和引用),如果表达式内容是解引用操作,会得到引用类型;如果是加了括号的表达式,会得到引用
3.字符串、向量和数组
- 不能把字面值直接相加
- 使用数组作为一个auto变量的初始值时,推断得到的类型是指针而非数组
- 用for语句处理多维数组时,除了最内层的循环外,其他所有的控制变量都应该是引用类型
4.表达式
- static_cast:只要不包含底层const,都可以用来类型转化
- const_cast: 只能改变对象的底层const性质(去掉或增加)
- reinterpret_cast:强制转化,很危险
6.函数
- 当用实参初始化形参时会忽略掉顶层const。形参的顶级const被忽略了。而底层const不会被忽略。
- 如果形参数量未知,但类型相同,可以用标准库的
initializer_list
类型的形参,这是一个模板类型。
- 调用一个返回引用的函数得到左值,其他类型得到右值。如果返回类型是常量引用,则不能给结果赋值。
网友评论