《VC++深入详解》第二章练习

来源:互联网 发布:mirrorlink 软件 编辑:程序博客网 时间:2024/06/06 17:04


第二章是讲C++语言基础,主要是封装、继承、多态这三个核心特性。几个知识点列举如下:

1、构造函数

2、析构函数,无返回值 无形参。作为父类的析构函数一般要写为虚函数,这样可以防止内存泄露,具体请参考该博文:http://www.cnblogs.com/lixiaohui-ambition/archive/2012/07/13/2589716.html

3、虚函数(多态)的实现原理

每一个包含虚函数的类,编译器都会为其定义一个虚函数表,注意是每一个类拥有一个虚函数表,而非每个对象。表中每个元素均为指向对应虚函数的指针。另外编译器还会为类增加一个成员变量vptr,用于指向其虚函数表。每一个由此类派生出来的对象都有该vptr,通过该指针便可以找到其虚函数表,访问正确的虚函数。

子类会从父类继承虚函数表,若子类改写了父类的某些虚函数,那么其虚函数表中对应的元素(函数指针)也会一起变化,这就是多态实现的精髓。

我们会发现,每个派生类的虚函数表都会保护父类的所有虚函数,这样继承下去,一层层的扩展,导致虚函数表的规模扩展很快,这也是MFC消息机制不采用虚函数的原因之一。


4、静态成员、静态成员函数

静态成员为所有对象共享,需要全局初始化

静态成员函数不能直接使用this,我们一般使用形参的方式将对象指针传递进去。

5、函数重载

只有返回值不同是不能构成函数的重载的。

6、在子类中调用父类带参数的构造函数

 class fish :public animal

{

public:

fish():animal(400, 300)

{

....

}

}

7、多重继承,这个特性在JAVA中是不支持的,JAVA使用类和方法来实现同样的效果。C++中多重继承还是很常见的。

class A:public c, public d

8、权限关键字,public private protected


0 0
原创粉丝点击