C++公有继承】的更多相关文章

is-a.has-a和like-a.组合.聚合和继承 两组概念的区别 - cbk861110的专栏 - 博客频道 -CSDN.NET http://blog.csdn.net/cbk861110/article/details/9028189 公有继承强调的是is-a的关系,强调的是一种继承关系,而has-a强调的是一种从属关系. 继承的形式为:  class  derived:public  based 公有继承的特点是基类的公有成员和保护成员作为派生类的成员时,它们都保持原有的状态,而基类的…
各种继承方式: 特征 公有继承 保护继承 私有继承 公有成员变为 派生类的公有成员 派生类的保护成员 派生类的私有成员 保护成员变为 派生类的保护成员 派生类的保护成员 派生类的私有成员 私有成员变为 仅仅能通过基类接口訪问 仅仅能通过基类接口訪问 仅仅能通过基类接口訪问 是否能隐式向上转换 能 能(但仅仅能在派生类中) 不能 要点: 对于公有继承:基类的protected和public成员都是可见的.而且,使用公有继承,基类的公有成员将变为派生类的公有成语,基类的保护成员将变成派生类的保护成员…
区别 下面通过一个示例来介绍三种继承的区别. 定义一个基类(假设为一个快退休的富豪): class RichMan { public: RichMan(); ~RichMan(); int m_company; private: int m_money; int m_car; protected: int m_house; }; 公司是public的,那么他自己(基类),创业伙伴(友元),儿子(子类),其他人(外部)都可以访问. 钱和车子是private的,自己(基类),创业伙伴(友元)可以访问…
//########################################################################### /* * 公有继承的两元性 * * - 接口的继承 * - 实现的继承 */ class Dog { public: virtual void bark() = 0; //只继承了接口 void run() { cout << "I am running."; } //既继承了接口,也继承了实现 virtual void…
公有继承时基类中各成员属性保持不变,基类中private成员被隐藏.派生类的成员只能访问基类中的public/protected成员,而不能访问private成员:派生类的对象只能访问基类中的public成员. 私有继承时基类中各成员属性均变为private,并且基类中private成员被隐藏.派生类的成员也只能访问基类中的public/protected成员,而不能访问private成员:派生类的对象不能访问基类中的任何的成员. 保护继承时基类中各成员属性均变为protected,并且基类中p…
C++中的继承方式有: public.private.protected三种(它们直接影响到派生类的成员.及其对象对基类成员访问的规则). (1)public(公有继承):继承时保持基类中各成员属性不变,并且基类中private成员被隐藏.派生类的成员只能访问基类中的public/protected成员,而不能访问private成员:派生类的对象只能访问基类中的public成员. (2)private(私有继承):继承时基类中各成员属性均变为private,并且基类中private成员被隐藏.派…
有时候希望同一个方法在派生类和基类中的行为是不同的.换句话说,方法的行为取决于调用该方法的对象.这种较复杂的行为称为多态——具有多种形态.即同一种方法其行为随上下文而异.有两种重要的机制可用于实现多态公有继承: 在派生类中重新定义基类的方法. 使用虚方法. 如果要在派生类中重新定义基类的方法,通常应将基类方法声明为虚的.这样,程序将根据对象类型而不是引用或指针的类型来选择方法版本.为基类声明一个虚析构函数也是一种惯例.这样做是为了确保释放派生对象时,按正确的顺序调用析构函数.注意virtual只…
赋值兼容规则是指在需要基类对象的任何地方都可以使用公有派生类的对象来替代.通过公有继承,派生类得到了基类中除构造函数.析构函数之外的所有成员,而且所有成员的访问控制属性也和基类完全相同.这样,公有派生类实际就具备了基类的所有功能,凡是基类能解决的问题,公有派生类都可以解决.赋值兼容规则中所指的替代包括以下的情况: 1>派生类的对象可以赋值给基类对象. 2>派生类的对象可以初始化基类的引用. 3>派生类对象的地址可以赋给指向基类的指针. 在替代之后,派生类对象就可以作为基类的对象使用,但只…
昨天学习三种继承方式,有些比喻十分形象,特此分享. 首先说明几个术语: 1.基类 基类比起它的继承类是个更加抽象的概念,所描述的范围更大.所以可以看到有些抽象类,他们设计出来就是作为基类所存在的(有些名字里面有abstract的). 基类也叫父类,虽然本人觉得这个比喻并不恰当.因为实际上子类是基类的扩充,描述了更加具体的东西.但现实的父子关系并非如此.但在有些方面这个比喻还是比较恰当的. 现在我们假设基类是一个快要退休的富豪.代码如下: class RichMan { public: RichM…
公有继承: 基类的成员在派生类中维持原来的访问权限,基类的publice成员为派生类的public成员,基类的protected成员为派生类的protected成员,基类的private成员在派生类的private成员,但是却在派生类中不可见,也即不能操作,但是存在.即:派生类的成员函数不能直接访问基类的私有成员,只能通过基类的一些成员函数进行访问. 私有继承: 继承之后,基类的所有成员在派生类中为private属性,其中基类的private成员在派生类中不可见,也即不能操作,但是存在. 即:派…