首页 > 代码库 > C++基本要点复习--------coursera程序设计实习(PKU)的lecture notes
C++基本要点复习--------coursera程序设计实习(PKU)的lecture notes
因为一些特性复杂,很多时候也用不到一些特性,所以忘记了,算是随笔,也当作一个临时查找的手册。没有什么顺序,很杂。
1.构造函数通过函数重载的机制可以有多个(不同的构造函数,参数个数,或者参数类型不同。),但是析构函数只能有一个。当没有在代码中写明构造或析构函数时,编译器会自动生成缺省的构造或析构函数。构造函数和析构函数都无返回值。另外,析构函数必须无参数。没写复制(拷贝)构造函数,编译器也会自动生成缺省的复制构造函数。复制构造函数会生成一个临时隐藏的对象,在调用一个以类对象作为参数的函数和调用一个以类对象作为返回值的函数的时候,复制构造函数都会自动调用。
2.对于C++类中的普通成员变量每个对象(实例)会各自有一份,而静态成员变量一共就一份(因为是放在内存中静态存储区的,属于全局),为所有对象(实例)共享。而且哪怕一个对象都不存在,静态成员变量都是存在的。
3.对于C++类中的普通成员函数必须具体作用于某个对象,而静态成员函数并不作用于具体某个对象。静态成员函数本质上是一种全局函数。
4.总结2,3,因此静态成员并不需要通过对象(实例)就可以访问。例如:
类A::静态成员函数;
类A的对象.静态成员函数;
5.必须在定义类的文件中对静态成员变量进行一次初始化或者说明,不然编译能通过,链接不能通过。例如 int 类A::TotalNum = 0; 其中TotalNum为静态成员变量。
6.在静态成员函数中,不能调用非静态成员函数,也不能访问非静态成员变量。(但是非静态成员函数是能访问静态成员变量的)。
*******************************************************************************************************
1.成员对象:一个类的成员变量是另一个类的对象。
2.包含成员对象的类叫做封闭类。
3.一般对于封闭类,用初始化参数列表来初始化。
4.生成封闭类对象的语句的时候,要明确“对象中的成员对象”要如何进行初始化。
5.当生成封闭类对象的时候,首先会调用其成员对象中的构造函数,然后再调用自身的构造函数。
6.成员对象构造函数的调用顺序:和成员对象在类中的说明顺序一致,与在成员初始化列表中的顺序无关。
7.当封闭类对象消亡时,先调用封闭类的析构函数,再调用成员对象的析构函数。