《C++Primer》第七章:类

  1. 成员函数通过一个this隐式参数来访问调用它的对象,this指针指向该对象的地址。当使用成员变量的时候,this被隐式使用。
  2. 成员函数紧随参数列表后面的const关键字。默认情况是,this是一个指向类类型的常量指针,在const成员函数中,this指针是一个指向常量类类型的常量指针。
  3. 编译器分两步处理类,首先编译成员的声明,然后才轮到成员函数体。因此成员函数体可以随意使用类中的其他成员函数而无需在意这些成员出现的次序。
  4. 类外部定义的成员的名字必须包含他所属的类名。
  5. 默认构造函数无需任何实参。

Read More

《C++Primer》第六章:函数

  1. 函数的返回类型不能是数组类型或者函数类型,但是可以是指向数组或者函数的指针。
  2. static将局部变量声明为局部静态对象,局部静态对象直到程序终止才会被销毁。
  3. 函数的三要素(返回类型,函数名,形参类型)描述了函数的接口,函数声明也称为函数原型。
  4. 函数传参时,引用避免拷贝,const禁止修改。
  5. 不知道函数的形参个数的时候,如果参数的类型一致,可以使用initializer_list

Read More

《C++Primer》第三章:字符串、向量和数组

  1. 头文件不应该包含名字空间的using声明。
  2. string的size函数返回类型是size_type,这是标准库的配套类型,体现了机器无关的特性。size_type一定是unsigned的,并且足够大。在使用时,也应该用该类型的变量存放size函数的返回值。如果感觉不方便,可以使用auto或者decltype。不要一股脑用int导致出现带符号数和无符号数混用的错误。
  3. string类型支持加法操作,但是不能支持两个字符串字面值相加。因为出于与C的兼容性,C++中字符串字面值不是string类型对象。
  4. string的下标运算符接受的输入类型是size_type,数组元素的下标类型是size_t,一种机器相关的无符号类型。
  5. vector是类模板。

Read More

《C++Primer》第四章:表达式

  1. 函数调用也是一种特殊的运算符,是多元运算符,对运算对象的数量没有限制。
  2. 当一个对象被用作左值的时候,使用的是对象的身份(内存位置);当一个对象被用作右值的时候,实际使用的是它的内容。
  3. 对于表达式a=f()+g()*h(),三个函数如果会改变同一对象的状态,那么a的结果是未定义的,因为无法确定g和h的执行顺序。
  4. 对于算数类型,在表达式求值之前,小整数类型的运算对象被提升成为较大的整数类型,所有运算对象最终转换为同一类型,其他的浮点数类型也是尽量以避免丢失精度的原则来进行隐式转换。
  5. m%(-n)等价于m%n(-m)%n等价于-(m%n)

Read More

《C++Primer》第二章:变量和基本类型

  1. c++11 推荐使用列表初始化。
  2. 声明规定了变量的类型和名字,定义还申请存储空间,并可能执行初始化操作。声明操作需要关键字extern,并且不要显式初始化变量。对变量初始化会抵消extern的作用,而且函数体内部,初始化extern变量甚至会报错。
  3. 自定义标识符不能连续出现两个下划线,也不能以下划线紧接大写字母开头。函数体外的标识符不能以下划线开头。
  4. 名字的作用域始于名字的声明语句,结束于语句所在的作用域末端。
  5. 使用::a访问全局作用域中的a。

Read More

本站总访问量