VC++深入详解 笔记 第三章(1) this指针的测试
2011-04-24 22:33
225 查看
在第三章的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
我对这个地方不明白,为什么在基类的构造函数中的this指针会指向一个派生类的对象,后看作者讲的视频,还是不明白,遂上网搜寻答案,找了半天终于明白了。下面是一个小小的测试程序。
#include <iostream.h> class base { public: base *pointer; public: base() { pointer = this; } virtual void output() { cout<<"output base!"<<endl; } }; class derive:public base { public: void output() { pointer = this; cout<<"output derive!"<<endl; } }; void main() { base base_variable; base_variable.pointer->output(); derive derive_variable; derive_variable.pointer->output(); }
运行结果如下:
为什么是这样的结果呢?我们首先要知道: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
相关文章推荐
- 孙鑫视频教程里第三章的this指针小测试程序
- 孙鑫视频教程《深入学习window》里第三章的this指针小测试程序
- 关于孙鑫MFC视频第三章中this指针指向基类还是派生类的测试程序
- C++ primer 【笔记】C++中this指针的用法详解
- VC++深入详解 笔记 第三章(3) 窗口类对象和窗口的关系
- C++ Prime学习笔记之this指针
- C和指针 学习笔记——第三章 数据
- <深入理解C指针>学习笔记和总结 第三章 指针和函数
- (转)VC++深入详解第三章笔记
- VS2010 C++ 学习笔记(六) this指针 const 指针 引用
- C++语言笔记系列之五——引用(&)和this指针详解
- 深入理解 C 指针阅读笔记 -- 第三章
- VC深入详解中的一个this指针小测试
- C++ Primer 学习笔记_49_类与数据抽象 -暗含的this指针
- c++ primer 学习笔记:类之隐含的this 指针
- c++ primer 学习笔记21类的定义和声明、隐含的this指针、类作用域
- 【C++】【学习笔记】【016】this指针和类的继承
- this指针学习笔记
- JavaScript 学习笔记 四 this指针
- c++笔记03---构造函数,初始化表,文件分类,钟表练习,析构函数,this 指针