#include
using namespace std;
class Shape
{
public:
virtual double area()=0;//纯虚函数
};
class Trigon:public Shape
{
public:
Trigon(double H,double W)
{
h=H;
w=W;
}
double area()
{
return h*...
分类:
编程语言 时间:
2015-01-14 12:54:02
阅读次数:
245
1.功能晚绑定时运行时完成。class Point{public: virtual double Area(){} ...}class Circle:public Point{public: double Area(){} //仍为虚函数,重定义时virtual可写也可不写}double C...
分类:
其他好文 时间:
2015-01-14 06:14:04
阅读次数:
131
RTTI
通过运行时类型识别(RTTI),程序能够使用基类的指针或引用来检索这些指针或引用所指对象的实际派生类型。通过下面两个操作符提供
RTTI:
1. typeid 操作符,返回指针或引用所指对象的实际类型。
2. dynamic_cast 操作符,将基类类型的指针或引用安全地转换为派生类型的指针或引用。
这些操作符只为带有一个或多个虚函数的类返回动态类型信息,对于...
分类:
其他好文 时间:
2015-01-13 19:58:02
阅读次数:
242
1、具备基本的编程能力,如c、c++,c、c++作为很基础的语言,不要求精通,但是必须会写,写个小工具完全没有问题,同时要对c++的类、继承、虚表虚函数等很熟悉,很多游戏都用c++开发,而且比较庞大,只有基础掌握好,才能更好的从汇编层来读懂代码,很多时候我们看单条汇编指令时完全没有问题的,但是一旦组...
分类:
其他好文 时间:
2015-01-12 20:53:29
阅读次数:
229
继承、封装、多态是面向对象编程最主要的三个特征,有人说多态是理解C++最难理解的一部分,其实我觉得单单从技术上讲,多态并不难,难的是你需要懂得在何时使用多态,就像封装一样,封装本身不难,难的是你对整个事物和需求的理解,以及如何封装会更好。多态的最简单使用:关键字virtual,虚函数是实现多态最.....
分类:
编程语言 时间:
2015-01-09 19:14:16
阅读次数:
234
构造函数为什么不能是虚函数
C++
从存储空间角度,虚函数对应一个指向vtable虚函数表的指针,这大家都知道,可是这个指向vtable的指针其实是存储在对象的内存空间的。问题出来了,如果构造函数是虚的,就需要通过vtable来调用,可是对象还没有实例化,也就是内存空间还没有,怎么找vtable呢?所以构造函数不能是虚函数。简单来说就是:虚函数的执行依赖于虚函数表。而虚函数表在...
分类:
其他好文 时间:
2015-01-08 21:37:33
阅读次数:
336
由于刚开始学的时候不知道Bullet的单位1.0代表多大,所以制作出的模型的大小也无法判断。
不用担心,Bullet提供了一个类btIDebugDraw,这个泪已经实现了很多绘制功能,我们要做的就是实现几个虚函数。
我们继承btIDebugDraw,实现虚函数
class PhysicsDraw3D : public btIDebugDraw
{
public:
void drawLine...
分类:
其他好文 时间:
2015-01-06 18:08:08
阅读次数:
290
详细解释了基类指针和引用指向派生类的原理和内存布局的结构。对动态调用和静态调用详细说明,对虚函数的实现原理和多态的关键以及final、override的使用环境进行了说明。...
分类:
其他好文 时间:
2015-01-06 18:00:42
阅读次数:
754
虚函数与抽象函数 虚函数是有代码的并明确允许子类去覆盖,但子类也可不覆盖,就是说可以直接用,不用重写 抽象函数是没有代码,子类继承后一定要重写 在一个类中用虚函数: 是因为在超类中有实际代码的方法,但明...
分类:
其他好文 时间:
2015-01-05 22:04:46
阅读次数:
238
每一个类中都有构造函数、析构函数、赋值操作符。这几个函数是一个类最根本的函数,它控制着创建对象并初始化、对象消亡时的清理以及摆脱旧值赋新值。这样函数如果有问题,那么影响极为严重。
条款5-条款9分别讲述了编译器默认编写哪些函数、如何拒绝编译器默认编译的函数、析构函数为何要为virtual、异常不要逃离virtual函数、构造和析构函数中不要调用virtual函数。...
分类:
编程语言 时间:
2015-01-05 21:58:01
阅读次数:
280