现在的位置: 首页 > 综合 > 正文

VC++深入详解 笔记 第三章(1) this指针的测试

2014年11月16日 ⁄ 综合 ⁄ 共 1019字 ⁄ 字号 评论关闭

      在第三章的74页中,有这样一行代码:pModuleState->m_pCurrentWinApp = this;作者说,根据C++继承性原理,这个this对象代表的是子类CTestApp实例化的一个对象,即theApp。

      我对这个地方不明白,为什么在基类的构造函数中的this指针会指向一个派生类的对象,后看作者讲的视频,还是不明白,遂上网搜寻答案,找了半天终于明白了。下面是一个小小的测试程序。

运行结果如下:

      为什么是这样的结果呢?我们首先要知道:this指针指向的是一个类的对象,而且指向的是当前实例化的对象。我们先看看main()函数中,我们总共构造了两个对象,一个是基类的对象base_variable,一个是派生类的对象derive_variable。我们再看看基类中的构造函数base()什么时候会被调用呢?很明显,构造一个基类对象和构造一个派生类对象时都会调用

      在我们构造基类对象base_variable时,this指针指向这个对象,所以pointer也会指向这个对象,所以调用的output()函数是基类中的output()函数。而我们构造派生类对象derive_variable时,this指针指向这个对象,所以调用的output()函数是派生类中的output()函数。

      所以程序输出这样的结果,我们也就能够理解为什么了。74页的那个问题也OK了。

参考论坛:http://topic.csdn.net/u/20070210/03/b30591d0-4d27-430c-b31e-5a2b7ee8011c.html

抱歉!评论已关闭.