杂七杂八易忘点(待补充)

1)变量的定义:

变量的初始化和赋值区别:初始化不是赋值,是变量在创建的时候给的一个初始值,而赋值的含义是把当前变量的值擦除,用一个新值来代替。

2)指针和引用的区别:

  1. 引用在定义的时候就必须绑定对象而且始终绑定该对象且引用没有 const(指的是所引对象的值可以改变,所绑定对象本身不可变,常量引用可以绑定字面值,不具有顶层const的指针可以改变指针所指对象,同时指针定义的时候可以定义为空nullptr
  2. 指针是对象,引用不是对象只是对象的引用。
  3. Sizeof(指针)得到指针本身的大小,sizeof(引用)得到所引对象的大小。

(3)顶层const和底层const(指针的角度):

顶层const:指的是指针本身不会变。

底层cosnt:指的是指针所指对象不会变。

(4)constexpr

 使用constexpr可以验证一个表达式是否为常量表达式,如果你认定一个表达式为常量表达式,那就把它声明成constexpr类型(为了他人和自己着想)。

5autodecltype

     auto会忽略顶层const,保留底层const

     decltype(())必然是引用类型,decltyp*p)得到的是(假设是intint &

6)头文件

     预处理器可以避免多文件分离式编译下对象的重复定义问题。

     头文件中不应该包含using语句,容易引发名字冲突。    

(7)几个特殊类型

1.auto len=line.size()   //len的类型是string::size_type

     该类型是string类下定义的一个无符号类型,能够存放任何string对象的大小,size()函数的返回值是size_type类型。(注意避免混用intunsigned

  1. difference_type stringvector中都有定义,在迭代器中他是指左侧迭代器移动到右侧迭代器的距离的类型,可正可负,有符号。
  2. size_t 是一个与机器相关的unsigned类型,定义在cstddef头文件中。

在用下标访问元素时,数组的下标类型就是size_t,vector实际上也是使用此类型,源码中有typedef size_t size_type

  1. ptrdiff_t是两个指针相减的结果的类型,定义在cstddef头文件中。带符号。

(8)阅读一个复杂的定义

     不带数组的从右往左读,带数组的从中间往两边读。

(9)强制类型转换的几种类型

  1. static_cast 只要不包含底层const都可以使用。
  2. const_cast 去掉const属性,只能去掉底层const。不能改变对象的类型,如果对象本身是个常量使用const_cast将产生未定义行为。

(10)switch语句

switch语句中的case标签必须是整型常量,每个case(包含default)都应当有break语句作为结束,否则匹配对应的case结束后将接着执行不含有breakcase语句。

猜你喜欢

转载自www.cnblogs.com/Royzzzzz/p/10574132.html