当前在线人数16647
首页 - 分类讨论区 - 电脑网络 - 葵花宝典版 -阅读文章
未名交友
[更多]
[更多]
文章阅读:Re: VC里面的stl支持是不是很弱?
[同主题阅读] [版面: 葵花宝典] [作者:thrust] , 2004年07月14日14:18:10
thrust
进入未名形象秀
我的博客
[上篇] [下篇] [同主题上篇] [同主题下篇]

发信人: thrust (哼哼的多隆猪), 信区: Programming
标  题: Re: VC里面的stl支持是不是很弱?
发信站: Unknown Space - 未名空间 (Wed Jul 14 14:21:53 2004), 转信

You are not supposed to CALL a ctor directly.
you should use initializer to "call" it.
i.e., if you don't write a initializer
PointGeneric3D<T>::PointGeneric3D(T xx, T yy, T zz)
{ ... }

then compiler will automatically generate a initializer as if you wrote
PointGeneric3D<T>::PointGeneric3D(....) : PointGeneric<T>()
{ ... }
this implicit initializer will call ctor of base class and set the vptr
to the vtbl of base class.
after this implicit initializer, the ctor of derived class is called and
the vptr is updated to PointGeneric3D<T>.
So if you call the base class ctor explicitly (again) then vptr is
messed again. So this is all your fault.

【 在 observer (笑看人生) 的大作中提到: 】
: 能解释得更详细一点吗?
: 以前是直接写
: PointGeneric<T>::PointGeneric<T>(xx, yy);
: 发现x, y的值运行完这句后又恢复成 无效值,
: 加上 this->
: 以后 x, y的值才保留赋给它的有效值
: 【 在 pptwo (pp) 的大作中提到: 】
: : 这句话把PointGeneric3D的vtable重写了,自然不可能对。


--
贵姓阿你? 多隆哪有你这么帅阿?

※ 修改:.thrust 于 Jul 14 14:23:16 修改本文.[FROM: 128.205.]
※ 来源:.Unknown Space - 未名空间 mitbbs.com.[FROM: 128.205.]

[上篇] [下篇] [同主题上篇] [同主题下篇]
[转寄] [转贴] [回信给作者] [修改文章] [删除文章] [同主题阅读] [从此处展开] [返回版面] [快速返回] [收藏] [举报]
 
回复文章
标题:
内 容:

未名交友
将您的链接放在这儿

友情链接


 

Site Map - Contact Us - Terms and Conditions - Privacy Policy

版权所有,未名空间(mitbbs.com),since 1996