码迷,mamicode.com
首页 > 编程语言 > 详细

C++ 派生类

时间:2017-10-10 14:42:47      阅读:267      评论:0      收藏:0      [点我收藏+]

标签:暴力   c++   ase   level   一个   类对象   log   logs   错误   

现在假设一个继承自 ,因此,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++ 派生类

标签:暴力   c++   ase   level   一个   类对象   log   logs   错误   

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!