1、面向对象的核心概念:封装,继承,多态
2、结构变量的每个成员都会占据不同的内存单元,而联合变量的每个成员都共享同样的内存单元。即一个联合变量的大小实际上是他占内存最多的那个成员的大小。
3、malloc和free的不足:
- malloc参数是以字节计的内存大小,程序员需要自己计算待分配单元的字节数。
- malloc返回值是无类型指针void*,需要程序员自己转换成合适的指针类型。
使用new和delete的优点为:
- new参数是待分配单元的数目,它自动计算要分配类型的大小,不用给出字节数。
- new自动返回正确的指针类型,不必转换。
- 可以用new将分配的存储空间进行初始化。
4、带有参数的宏很受限,他是无类型机制,每个变元仅能被使用一次,有时产生不可期望的副作用。为此定义内联函数,既集合函数的复杂性,又体现宏的替换性。
5、静态数据成员属于类,而不属于对象。静态数据成员的定义在类内,在类外进行说明。
6、构造函数的初始化方式:
- 在构造函数内用赋值语句
- 用构造函数的初始化列表方式
注意:一些特殊成员,比如常量成员和引用成员,都必须在初始化列表中进行。
7、一个类如果有const成员或引用成员,就不能使用缺省的构造函数,必须用户自己定义。
8、一般情况下,拷贝构造函数都很好工作。但存在一些特殊情况,比如说函数中形参p的构造函数如果是缺省的话,会少掉一些操作,所以要显式拷贝构造函数。详细看C+书的P116。
9、一个成员函数的原型后面跟一个const,该函数称为const成员函数,特点是该函数不能修改this所指的对象的成员。
this指针主要用在运算符重载和自引用的场合。