首页 > 编程语言 > 详细

C++ 派生类

时间:2017-10-10 14:05:21      阅读:239      评论:0      收藏:0      [点我收藏+]

现在假设一个继承自 ,因此,B* 可以用作 A*。类似的,一个B&可以用作 A&。但是,一个 不一定是一个 B,因此,A*不能用作B*。一般而言,如果一个类Derived有一个公有基类Base,那么我们就可以将一个Derived* 赋予一个Base* 类型的变量而无须显式类型转换。而相反的转换,即从Base* 到Derived* ,必须是显式的。例如:

void g(Manager mm,Employee ee)
{
    Employee* pe = &mm;     //正确:每个Manager都是一个Employee
    Manager* pm = ⅇ      //错误:并不是每个Employee都是一个Manager

    pm->level = 2;          //灾难:ee不包括level
    
    pm = static_cast<Manager*>(pe);     //暴力转换;可奏效,因为pe指向Manager mm

    pm->level = 2;          //没问题:pm指向Manager mm,包含level
}

换句话说,若通过指针和引用进行操作,派生类对象可以当做其基类对象处理,反过来则不能。

  将一个类用作基类等价于定义一个该类的(无名)对象;因此,类必须定以后才能用作基类。

虚函数   

C++ 派生类

原文:http://www.cnblogs.com/gardenofhu/p/7645097.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!