以文本方式查看主题 - 计算机科学论坛 (http://bbs.xml.org.cn/index.asp) -- 『 C/C++编程思想 』 (http://bbs.xml.org.cn/list.asp?boardid=61) ---- 一个非常有趣的问题讨论vbtl (http://bbs.xml.org.cn/dispbbs.asp?boardid=61&rootid=&id=15529) |
-- 作者:awt -- 发布时间:3/14/2005 11:05:00 AM -- 一个非常有趣的问题讨论vbtl #include <iostream.h> void trace(const char* msg) { cout << msg << endl ;} class A { public: virtual void test()=0; virtual void AddRef() = 0; virtual void Release() = 0; }; class B void C::function() int main()
|
-- 作者:awt -- 发布时间:3/14/2005 11:06:00 AM -- 程序的结果是nonaddref 呵呵,A和B是完全没有关系的2个类 C多重继承他们 ((A*)p)->test(); p本来指向的是C类中的b部分 由于a,b是不相关的,其实上面的转换是很不安全的 完全取决于编译器,而vbtl认为p指向的是其第一个虚函数(因为test是第一个) 而p指向c中的b部分,所以是NondelegatingAddRef。 |
-- 作者:awt -- 发布时间:3/14/2005 11:07:00 AM -- 希望大家进来谈谈,共同进步。。。。。 |
-- 作者:simonsun -- 发布时间:3/19/2005 10:45:00 PM -- 呵呵,你也说了这是不安全的,完全是implementation-defined行为。这些代码是没有什么意义的也:) |
-- 作者:greenlixiao -- 发布时间:4/30/2005 11:40:00 AM -- 没有任何意义 |
W 3 C h i n a ( since 2003 ) 旗 下 站 点 苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》 |
46.875ms |