C++面向对象程序编程——知识点

知识点一:

复制构造函数一般在以下情况下使用:

1.当用一个已存在的类对象初始化同一个类的新对象时;

2.把一个类对象的副本作为参数传递给参数时;

3.返回值为一个类对象时;

知识点二:

运算符重载格式:返回值类型 operator 运算符(参数列表)

对于++运算符的重载,前置:返回值类型 operator ++()

                                     后置:返回值类型 operator ++(int)

知识点三:

多态性是指一个接口具有多种功能。在C++语言中,有一种运行时的多态性,就是虚函数

纯虚函数在基类中只有声明,没有实现。含有纯虚函数的类被称为抽象类,用户只能从抽象类派生子类,而不能声明抽象类对象。如果子类派生于一个抽象类,则子类必须实现抽象类中的所有纯虚函数。在调用纯虚函数的时候,是以对象运行时的类型确定的,而不是以对象声明时的类型为准。

知识点四:

每一个方法都有一个this指针。this指针用于指向以该方法所属类定义的对象,当某个对象调用方法时,方法的this指针便指向该对象。因此,不同对象调用同一方法时,编译器将根据this指针所指向的不同对象来确定应该引用哪一个对象的数据成员。

知识点五:

单继承:当要调用的方法(或数据成员)在多个基类中都存在而在派生类中不存在时,需要指出要调用的哪个基类的方法(或数据成员)。

承:如果类CPlane和CBus派生于同一个基类CMachine,那么CVehicle(class CVehicle : public CPlane, public CBus)类中就会有两个CMachine对象,如果直接调用CMachine对象中的方法,就会出现编译错误,因为编译器不知道调用的是CPlane父类的方法还是CBus父类的方法,所以需要在调用CMachine中的方法时指定类的名称,如:CVehicle veh; veh.CPlane::explain();其中,explain()是CMachine类的方法。

虚继承:在多继承中,如果派生的多个基类又派生于同一个基类,则对该基类的方法进行访问时就会产生错误,如果通过virtual关键字进行继承,就可以解决这个问题了。用virtual关键字进行的继承叫虚继承,当进行虚继承时,编译器就会通过指针对其进行处理,使其只能产生一个基类子对象,这样编译器就不会产生错误了。

class 类名称:virtual 访问限定符 基类名称

也就是将类CPlane和类CBus改为虚继承,这样在CVehicle类对象调用基类CMachine中的方法时,就不需要指定类名称了。

知识点六:

静态数据成员:静态数据成员是指其数据是属于类的,通过类名就可以访问的数据成员。在声明类数据成员时,只要在类型前添加static关键字,该数据成员就变为静态数据成员。静态数据成员在声明时就分配了存储空间,而且类中所有的方法都可以访问这个静态数据成员,并且可以利用这个特性在同一个类中的各对象之间传递数据。声明静态数据成员不需要声明任何类实例,不过程序的其他部分不能访问非公用的静态数据成员。

静态数据成员可以被多个对象所共有,无论定义多少个对象,内存中的静态数据成员只有一个。因此,当一个对象修改了静态数据成员,另一个对象在访问静态数据成员时,也会发生变化。

静态方法:声明静态方法只要在方法返回值类型前添加static,静态方法也是在编译时分配存储空间的,并且被所有的对象所共享,可以由类直接调用。值得注意的是,在静态方法中只能访问静态数据成员,而不能访问普通的数据成员

知识点七:

友元类:在开发的时候,一个类经常将另一个类的对象作为自己的成员。这样,在该类中就可以访问另一个类的公有数据和方法了,但是,有些时候需要访问另一个类中的私有数据成员和方法。C++提供了友元类,友元类实现了一个类对另一个类的无限制访问。一个类在确认另一个类为友元后,可以让另一个类读写自己的所有私有数据成员和方法。

友元类不能传递的,即如果A是B的友元,B是C的友元,并不意味这A是C的友元。

友元关系也不能继承,即如果A是B的友元,C派生于A,不意味着C是B的友元。

友元函数:用到友元类的时候并不多,因为很多时候并不想让整个类成为另一个类的友元,而是需要一种方法,使另一个类的个别方法可以读写当前类的数据成员。这时可以指定某个特定的函数为类的友元,这种特定的函数称为友元函数。

知识点八:

在包含头文件时,""表示先搜索当前目录,然后是系统目录和PATH所列出来的目录,<>表示搜索系统目录和PATH所列出来的目录,不搜索当前目录。

猜你喜欢

转载自blog.csdn.net/Small_SaltedFish/article/details/81119556