-
类之于对象就像类型之于变量。也就是说,类定义描述的是数据格式及其用法,而对象则是数据规范创建的实体。类描述了一种数据类型的全部属性,对象是根据这些描述创建实体。
-
对类型名(如int)使用sizeof操作符时,应将名称放在括号中;但对变量名(如n_short)使用该操作符,括号是可选的:
sizeof(int)
sizeof n_short
-
如果不对函数内部定义的变量进行初始化,该变量的值将是不确定的。这意味着该变量的值将是它被创建之前,该内存单元保存的值。
-
d.dddE+n指的是将小数点向右移n位,而d.dddE-n指的是将小数点向左移n位。
-
一定要在对指针应用解除引用操作符(*)之前,将指针初始化一个确定的、适当的地址。
-
只能使用delete来释放使用new分配的内存。不过,对空指针使用delete是安全的。
不要使用delete释放同一个内存块两次。
如果使用new []为数组分配内存,则应使用delete []来释放。
如果使用new []为一个实体分配内存,则应使用delete来释放。 -
将指针变量加1后,其增加的值等于指向的类型占用的字节数。
-
如果数据类型本身不是指针,则可以将const数据或非const数据的地址赋给指向const的指针,但只能将非const数据的地址赋给非const指针。
-
必须在声明引用时进行初始化。
-
如果函数调用的参数不是左值或与相应的const引用参数的类型不匹配,则C++将创建类型正确的匿名变量,将函数调用的参数的值传递给该匿名变量,并让参数来引用该变量。
-
返回引用的函数实际上是被引用的变量的别名。
-
对于带参数列表的函数,必须从右向左添加默认值。
-
类和结构体的唯一区别是,结构体的默认访问类型是public,而类为private。
-
构造函数的参数表示的不是类成员,而是赋值给类成员的值。因此,参数名不能与类成员相同。
-
当按值传递和返回对象时,都将调用复制构造函数。
-
如果要在派生类中重新定义基类的方法,则将它设置为虚方法;否则,设置为非虚方法。
-
构造函数不能是虚函数。派生类不继承基类的构造函数,将类构造函数声明为虚函数没有意义。析构函数应当是虚函数,除非类不用作基类。给类定义一个虚拟析构函数并非错误,即使这个类不用做基类,只是一个效率方面的问题。通常应给基类提供一个虚拟析构函数,即使它并不需要析构函数。友元不能是虚函数,因为友元不是类成员。
-
关键字private和protected相似,在类外只能用共有成员来访问protected部分的类成员。private和protected之间的区别只有在基类派生的类中才会表现出来。派生类的成员可以直接访问基类的保护成员,但不能直接访问基类的私有成员。最好对类数据成员采用私有访问控制,不要使用保护访问控制;同时通过基类方法使派生类能够访问基类数据。