《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
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
相关文章推荐
- java-第二章-上机练习-01
- 第二章上机练习1 我的银行系统的取款功能
- .NET第二章上机练习
- python学习第二章变量和简单数据类型的部分课后练习自己尝试的代码
- VC++深入详解第二章
- 《算法导论》第二章-第1节_练习(参考答案)
- 第二章 2.2.2节练习 & 2.2.3节练习
- 第二章 2.6.1节练习
- 《Python核心编程》第二版第36页第二章练习
- 文章标题android软件安全与逆向分析 第二章练习笔记
- 第二章:上机练习三 经理评分项目
- c++ primer plus(第6版)中文版 第二章编程练习答案
- Python核心编程 练习 第二章
- 算法竞赛入门经典练习:第二章
- 深入.NET 第二章 上机练习2
- Java编程思想第四版第二章练习
- 再读《The C Programming Language》 第二章 2.4 练习汇总
- 第二章 2.1.1节练习
- 第二章 2.2.4节练习
- 第二章之“CheckSums”(练习2.3-7)