刚刚看到了C++代理模式,简单的学习了一下,当一个应用程序执行时,可以采用这种方法,至于到底怎么用,我还不知道。 A->B->C。 当应用A要执行的时候,采用代理B,B继承自协议C,实现C中的虚方法,C为一个抽象类,包含一个纯虚函数。这样的话,主函数中只需要执行A的方法就可以了。 下面用代...
分类:
编程语言 时间:
2014-07-02 19:22:40
阅读次数:
213
转自:http://blog.csdn.net/itolfn/article/details/7412364一:继承中的指针问题。1. 指向基类的指针可以指向派生类对象,当基类指针指向派生类对象时,这种指针只能访问派生对象从基类继承而来的那些成员,不能访问子类特有的元素 ,除非应用强类型转换,例如有...
分类:
编程语言 时间:
2014-07-02 19:05:47
阅读次数:
292
下面程序输出什么:#include<iostream>
usingnamespacestd;
classA{
public:
voidvirtualf(){
cout<<"A"<<endl;
}
};
classB:publicA{
public:
voidvirtualf(){
cout<<"B"<<endl;
}
};
intmain()
{
A*pa=newA();//定义了一个A类型的指..
分类:
其他好文 时间:
2014-07-02 15:32:58
阅读次数:
260
游戏中的人物伤害值计算问题。
(一)方法(1):一般来讲可以使用虚函数的方法:
class GameCharacter {
public:
virtual int healthValue() const; //返回人物的体力值,派生类可以做出修改
...
}; 这确实是一个显而易见的设计选择。但因为这样的设计过于显而易见,可能不会...
分类:
编程语言 时间:
2014-07-01 15:39:40
阅读次数:
172
多态性可分为两类:静态多态和动态多态。函数重载和运算符重载实现的多态属于静态多态,动态多态性是通过虚函数实现的。每个含有虚函数的类有一张虚函数表(vtbl),表中每一项是一个虚函数的地址, 也就是说,虚函数表的每一项是一个虚函数的指针。没有虚函数的C++类,是不会有虚函数表的。两张图:简单例子: 1...
分类:
编程语言 时间:
2014-06-30 22:59:27
阅读次数:
379
override是指派生类重写基类的虚函数,就像某个类中...
分类:
其他好文 时间:
2014-06-28 07:41:31
阅读次数:
156
前言C++中的虚函数的作用主要是实现了多态的机制。关于多态,简而言之就是用父类型别的指针指向其子类的实例,然后通过父类的指针调用实际子类的成员函数。这种技术可以让父类的指针有“多种形态”,这是一种泛型技术。所谓泛型技术,说白了就是试图使用不变的代码来实现可变的算法。比如:模板技术,RTTI技术,虚函...
分类:
其他好文 时间:
2014-06-25 22:30:46
阅读次数:
226
将C++对象保存到共享内存上时,由于程序DWON掉或者其他原因停掉程序(不清除共享内存)重新拉起程序时,共享内存上C++对象的虚函数指针已经失效。为了使得不清除共享内存重启程序时C++对象仍然有效,需要恢复共享内存上C++对象的虚函数表,通过C++的placement new可以做到。 假设 ...
分类:
编程语言 时间:
2014-06-24 12:17:59
阅读次数:
206
C++规定了虚函数的行为,但是将实现交给了编译器的作者.
通常,编译器处理虚函数的方法是给每一个对象添加一个隐藏成员.隐藏成员中保存了一个指向函数地址数组的指针.
这个数组称为虚函数表(virtual function table,vtbl).虚函数表中存储了为类对象进行声明的虚函数的地址.
例如:基类对象包含一个指针,该指针指向基类的虚函数表.
派生类对象包含一个指针,该指针指向一个独立...
分类:
编程语言 时间:
2014-06-22 17:06:32
阅读次数:
239