返回信息流最近在看代码的时候发现了一段这样的代码:
/*
Constructor
*/
AODV::AODV(nsaddr_t id) : Agent(PT_AODV),
btimer(this), htimer(this), ntimer(this),
rtimer(this), lrtimer(this), rqueue()
{
/*
以下省略
*/
}
其中,AODV是一个由Agent类派生的派生类。然后AODV中有几个成员变量btimer,htimer,ntimer,rtimer等,这些成员变量的类型分别是其他的类,如btimer是一个叫做BroadcastTimer类的对象,如下:
/*
* Timers
*/
BroadcastTimer btimer;
HelloTimer htimer;
NeighborTimer ntimer;
RouteCacheTimer rtimer;
LocalRepairTimer lrtimer;
那么,在类的构造函数中像btimer(this)这样的形式是什么意思呢?
我问了身边的一个同学,我俩都觉得是类似于基类的函数调用派生类指针那样的多态调用,也就是说this虽然是AODV类,但是仅仅对btimer这样的成员进行初始化。不知道我们两个理解的对不对,或者说这个this指针就不是AODV类的?希望版上的大神能指点一下哪!
这是一条镜像帖。来源:北邮人论坛 / cpp / #90857同步于 2016/3/29
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖
[问题]C++中this指针的一个问题
Pod
2016/3/29镜像同步3 回复
订阅后,新回复会通过你的通知中心匿名送达。
3 条回复
没搞懂你的问题在哪
或者说这个this指针就不是AODV类的?
是AODV类
定义AODV类的对象时,把this指针传给其他成员对象初始化,问题在哪?
不过btimer等成员变量初始化时不要调用AODV类的函数,尤其是虚函数,因为在btimer初始化时AODV类的对象还没有构造完成。
http://stackoverflow.com/questions/5058349/is-it-safe-to-use-the-this-pointer-in-an-initialization-list
【 在 Pod 的大作中提到: 】
: 最近在看代码的时候发现了一段这样的代码:
: [code=c]
: /*
: ...................