多重继承--判断

/*
* Copyright (c) 2013, 烟台大学计算机学院
* All rights reserved.
* 作    者:马广明
* 完成日期:2014 年 5 月 13 日
* 问题介绍: 继承的判断
* 版 本 号:v1.0
*/
#include <iostream>
using namespace std;
class Animal    //动物类
{
public:
    Animal() {}
    void eat(){
        cout << "eat\n";
    }
protected:
    void play()
    {
        cout << "play\n";
    }
private:
    void drink()
    {
        cout << "drink\n";
    }
};
class Giraffe: public Animal   //长颈鹿类
{
public:
    Giraffe() {}
    void StrechNeck()
    {
        cout << "Strech neck \n";
    }
private:
    void take()
    {
        eat();        // 正确,公有继承下,基类的公有成员对派生类可见
        drink();      // 正确,公有继承下,基类的保护成员对派生类可见
        play();       // 不正确,公有继承下,基类的私有成员对派生类不可见
    }
};
int main()
{
    Giraffe gir;      //定义派生类的对象
    gir.eat();        // 正确,公有继承下,基类的公有成员对mian函数可见
    gir.play();       // 不正确,保护成员对mian函数不可见
    gir.drink();      // 不正确,私有成员对mian函数不可见
    gir.take();       // 不正确,私有成员对mian函数不可见
    gir.StrechNeck(); // 正确,公有成员对mian函数可见
    Animal ani;
    ani.eat();        // 正确,基类的公有函数对mian函数可见
    ani.play();       // 不正确,保护成员对mian函数不可见
    ani.drink();      // 不正确,私有成员对mian函数不可见
    ani.take();       //错误,派生类的成员对基类对象(不论访问属性)不可见
    ani.StrechNeck(); //  错误,派生类的成员对基类对象(不论访问属性)不可见
    return 0;
}

多重继承--判断

时间: 2024-10-21 09:56:21

多重继承--判断的相关文章

第53课 被遗弃的多重继承(上)

1. 单一继承 (1)实验代码 #include <iostream> #include <string> using namespace std; void visitVtbl(int **vtbl) { cout << vtbl << endl; cout << "\t[-1]: " << (long)vtbl[-1] << endl; typedef void (*FuncPtr)(); int

第54课 被遗弃的多重继承(下)

1. C++中的多重继承 (1)一个子类可以拥有多个父类 (2)子类拥有所有父类的成员变量 (3)子类继承所有父类的成员函数 (4)子类对象可以当作任意父类对象使用 (5)多重继承的语法规则 class Derived: public BaseA, public BaseB, public BaseC{…}; 2. 多重继承问题一 (1)通过多重继承得到的对象可以拥有“不同的地址”!!! (2)解释方案:无 (3)原因分析 [编程实验]多重继承问题一 #include <iostream> u

C++多重继承的指针问题

下面说说C++多重继承中关于指针的一些问题. 指针指向问题 先看下面的程序: class Base1 { public: virtual void fun1() {cout << "Base1::fun1" << endl;}; }; class Base2 { public: virtual void fun2() {cout << "Base2::fun1" << endl;}; }; class Derive :

多重继承下的类型转换

主要解释强制类型转换的影响.因为static_cast会在编译期间检测,dynamice_cast会在运行时检测. #include <iostream> #include <hash_map> using namespace std; class I1 { public: virtual void vf1() { cout << "I'm I1:vf1()" << endl; } }; class I2 { public: virtua

python中多重继承与获取对象

1.python中多重继承 除了从一个父类继承外,Python允许从多个父类继承,称为多重继承. 多重继承的继承链就不是一棵树了,它像这样: class A(object): def __init__(self, a): print 'init A...' self.a = a class B(A): def __init__(self, a): super(B, self).__init__(a) print 'init B...' class C(A): def __init__(self,

Lua的面向对象——多重继承、私密性

本文转载于:http://www.benmutou.com/archives/1800 在Lua中的多重继承和私密性可能用得比较少,也可能只是我个人用得比较少. 本来想偷懒不写这文章的,因为我今天刚买了个漂移板,连起步都还没学会啊,想多学一会. 咳咳,本着坚持不懈.负责到底的态度,我还是决定随便写几句~(小若:随便写几句是几吨意思啊?!) 1.多重继承之在多个类中查找一个字段 我发现这些高(shen)智(jing)商(bing)人群真的很厉害,这种技巧都能想到,很佩服. 其实多重继承没什么特别的

(转载)【笨木头Lua专栏】基础补充21:面向对象——多重继承、私密性

在Lua中的多重继承和私密性可能用得比较少,也可能只是我个人用得比较少. 本来想偷懒不写这文章的,因为我今天刚买了个漂移板,连起步都还没学会啊,想多学一会. 咳咳,本着坚持不懈.负责到底的态度,我还是决定随便写几句~(小若:随便写几句是几吨意思啊?!) 笨木头花心贡献,哈?花心?不,是用心~ 转载请注明,原文地址:http://www.benmutou.com/archives/1800 文章来源:笨木头与游戏开发 1.多重继承之在多个类中查找一个字段 我发现这些高(shen)智(jing)商(

24.C++- 抽象类(存虚函数)、接口、多重继承

什么是抽象类 用来表示现实世界中的抽象概念 是一种只能定义类型,而不能产生对象的类 只能被子类继承,且抽象类的相关成员函数没有完整的体现,用来被子类重写. 比如图形(Shape)类, 就是一个抽象的概念,因为我们无法计算这个"图形"的面积,所以它的成员函数area()是空的. 而继承它的子类(矩形,圆形,三角形等)就可以去重写area()成员函数. 里面通过数学公式,计算出面积. 参考图形(Shape)类,代码如下: 既然Shape是个抽象的类,那就根本没有该类的对象,我们该如何避免他

C++中的多重继承(二)

1,本文分析另一个多重继承问题及其工程中的解决方案,单继承加多接口实现的开发方式: 2,多重继承的问题三: 1,多重继承可能产生多个虚函数表: 1,实际工程中可能造成不可思议的问题,并且这些问题很难以查找和排除: 3,多重继承问题三编程实验: 1 #include <iostream> 2 #include <string> 3 4 using namespace std; 5 6 class BaseA 7 { 8 public: 9 virtual void funcA() 1