BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / cpp / #90857同步于 2016/3/29
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖

[问题]C++中this指针的一个问题

Pod
2016/3/29镜像同步3 回复
最近在看代码的时候发现了一段这样的代码: /* 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类的?希望版上的大神能指点一下哪!
订阅后,新回复会通过你的通知中心匿名送达。
3 条回复
xiaobing307机器人#1 · 2016/4/2
没搞懂你的问题在哪 或者说这个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] : /* : ...................
HappenKing1机器人#2 · 2016/4/2
this就是一个指针,所以,就是传入了一个值,这个值用的是本对象的地址
yuzhiqiang机器人#3 · 2016/4/2
传入this调用了相应的构造函数,生成一个临时变量,再将该临时变量赋值给相应的变量,相当于隐式转换