你好,欢迎来到电脑编程技巧与维护杂志社! 杂志社简介广告服务读者反馈编程社区  
合订本订阅
 
 
您的位置:技术专栏 / C专栏
C++的私有继承、公有继承和保护继承
 

[cpp] 
#include <iostream> 
 
using namespace std; 
 
class Animal 

    protected: 
        int test; 
    public: 
    Animal(){ test = 0; cout << "animal init...\n";} 
    void eat(){cout << "Animal eat..." << endl;} 
}; 
 
class Giraffe: private Animal 

    public: 
        Giraffe(){cout << "giraffe init...\n";} 
        void StrechNeck(double) 
        { 
            eat(); 
            cout << "test: "<<test << endl; 
            cout << "strech neck \n"<<endl; 
        } 
}; 
 
class Cat: public Animal 

    public: 
    Cat(){cout << "cat init...\n";} 
   // void eat(){cout << "cat eat ...\n";} 
    void Meaw(){ 
        eat(); 
        cout << "meaw\n";} 
}; 
 
void Func(Animal& an) 

    an.eat(); 

int main() 

    Cat dao; 
    Giraffe gir; 
    Func(dao); 
    dao.Meaw(); 
    cout << "==========================\n"; 
    gir.StrechNeck(12); 
   // Func(gir); 
    return 0; 

运行结果:

总结:
1. 不管是私有继承还是公有继承都无法访问父类的私有成员;
2. 公有继承的子类对象,可以直接访问父类的protected和public的成员,就如同访问自己的成员一样;
3. 私有继承的子类对象,不能直接访问父类的任何成员;
4. 私有继承的子类对象,如果想要访问父类成员,只能通过子类的成员函数来访问父类的成员,就如同父类成员函数访问自己的成员(当然,父类的private成员无法访问)。
5. 保护继承与私有继承类似,继承之后的类相对于父类是独立的;其类对象,在公开场合无法使用基类的成员,也只能通过自己的成员函数来访问父类的protected和public成员。

  推荐精品文章

·2024年9月目录 
·2024年8月目录 
·2024年7月目录 
·2024年6月目录 
·2024年5月目录 
·2024年4月目录 
·2024年3月目录 
·2024年2月目录 
·2024年1月目录
·2023年12月目录
·2023年11月目录
·2023年10月目录
·2023年9月目录 
·2023年8月目录 

  联系方式
TEL:010-82561037
Fax: 010-82561614
QQ: 100164630
Mail:gaojian@comprg.com.cn

  友情链接
 
Copyright 2001-2010, www.comprg.com.cn, All Rights Reserved
京ICP备14022230号-1,电话/传真:010-82561037 82561614 ,Mail:gaojian@comprg.com.cn
地址:北京市海淀区远大路20号宝蓝大厦E座704,邮编:100089