注册 登录  
 加关注
查看详情
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

小可尼の博客

Linux后端的技术窝窝

 
 
 

日志

 
 

指向基类派生类指针,指向基类成员派生类成员指针,及互相赋值  

2012-02-02 20:01:15|  分类: C++ |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
 

可以安全地将一个指向基类成员的指针赋值给一个指向派生类的成员的指针,反过来不行。
另外,可将一个指向派生类对象的指针赋值给一个指向基类得指针,
即基类指针可在不加显式转换的情况下指向派生类对象。

 

代码测试如下,结果确实如上面所说:
      #include ...
        class Base
        {
        public:
                Base() {}
                virtual ~Base(){}                        
                virtual void show() { cout << "Base"; }
        };
        class Derived:public Base
        {
        public:
                Derived():Base() {} 
                ~Derived() {}
                void print() {}
                void show() { cout << "Derived"; }
        };
        int main()
        {
        Base base;                
        Derived derived;
               Base *pb = &derived;  // Ok,基类指针指向派生类对象;
        Derived *pd = &base;  // Error,派生类指针指向基类对象;
           pb->show();   //Ok,但输出 derived;
           pb->print();  //Error. 不可调用仅派生类有的方法;
        typedef void (Derived::*Pderived)();
        Pderived pmend = & Base::show;  // Ok,基类成员的指针赋值
                                               //给派生类成员的指针
        (derived.*pmend)();             // 使用派生类成员指针
          typedef void (Base::*Pbase)();
               Pbase pmenb = & Derived::show;  // Error.派生类成员的指针
                                               //赋值给基类成员的指针
        }

  评论这张
 
阅读(381)| 评论(0)

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018