您的位置:首页 > 编程语言 > C语言/C++

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

2014-10-19 09:47 162 查看
第二章是讲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、多重继承,这个特性在J***A中是不支持的,J***A使用类和方法来实现同样的效果。C++中多重继承还是很常见的。

class A:public c, public d

8、权限关键字,public private protected
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: