Chinaunix首页 | 论坛 | 博客
  • 博客访问: 103235
  • 博文数量: 34
  • 博客积分: 30
  • 博客等级: 民兵
  • 技术积分: 217
  • 用 户 组: 普通用户
  • 注册时间: 2013-01-10 23:36
文章分类
文章存档

2013年(34)

我的朋友

分类: C/C++

2013-02-20 14:38:51

 

  1. #include  
  2. class base 
  3. public
  4.     base *pointer; 
  5. public
  6.     base() 
  7.     { 
  8.         pointer = this
  9.     } 
  10.     virtual void output() 
  11.     { 
  12.         cout<<"output base!"<
  13.     } 
  14. }; 
  15. class derive:public base 
  16. public
  17.     void output() 
  18.     { 
  19.         pointer = this
  20.         cout<<"output derive!"<
  21.     } 
  22. }; 
  23.  
  24. void main() 
  25.     base base_variable;          
  26.     base_variable.pointer->output();  
  27.  
  28.     derive derive_variable;      
  29.     derive_variable.pointer->output();        


运行结果如下:

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

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

阅读(1128) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~