Sunwayking

导航

2011年9月16日 #

C++接口的定义用一个实例说明 [转]

摘要: 接口是一个没有被实现的特殊的类,它是一系列操作的集合,我们可以把它看作是与其他对象通讯的协议。C++中没有提供类似interface这样的关键 字来定义接口,但是Mircrosoft c++中提供了__declspec(novtable)来修饰一个类,来表示该类没有虚函数表,也就是虚函数都是纯虚的。所以利用它我们依然可以定义一 个接口。代码例子如下:#include<IOSTREAM>usingnamespacestd;#defineinterface class __declspec(novtable)interfaceICodec{public:virtualboolDecod 阅读全文

posted @ 2011-09-16 15:26 Sunwayking 阅读(469) 评论(0) 推荐(0) 编辑

C++中 _declspec(novtable) 的探讨 [转]

摘要: http://blog.csdn.net/walkerlan/article/details/3167877(1)V TA B L E(虚函数表)和VPTR(指向虚函数标的指针)的区别编译器到底做了什么实现的虚函数的晚绑定呢?我们来探个究竟。编译器对每个包含虚函数的类创建一个表(称为V TA B L E)。在V TA B L E中,编译器放置特定类的虚函数地址。在每个带有虚函数的类中,编译器秘密地置一指针,称为v p o i n t e r(缩写为V P T R),指向这个对象的V TA B L E。通过基类指针做虚函数调用时(也就是做多态调用时),编译器静态地插入取得这个V P T R,并在 阅读全文

posted @ 2011-09-16 15:18 Sunwayking 阅读(426) 评论(0) 推荐(0) 编辑