| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 550 人关注过本帖
标题:请问C++类的私有派生,如何使用派生类的对象调用基类的函数?
只看楼主 加入收藏
w2009w
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:2
帖 子:190
专家分:542
注 册:2015-4-20
结帖率:100%
收藏
已结贴  问题点数:22 回复次数:6 
请问C++类的私有派生,如何使用派生类的对象调用基类的函数?
定义一个基类Base,有两个公有成员函数fu1(),fu2(),私有派生出Derived类,如何通过Derived类的对象调用基类的函数fu1()。
#include<iostream>
using namespace std;
class Base
{
public:
    int fu1()
    {
        cout<<"Base func 1"<<endl;
        return 0;
    }
    int fu2()
    {
        cout<<"Base func 2"<<endl;
        return 0;
    }
};
class Derived:private Base{};
int main()
{
    Derived a;
    a.Base::fu1();
    return 0;
}
派生类的函数体和调用代码不知道怎么写啊?
搜索更多相关主题的帖子: public 如何 
2015-06-21 17:07
yangfrancis
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:贵宾
威 望:141
帖 子:1510
专家分:7661
注 册:2014-5-19
收藏
得分:22 
class Derived:private Base
{
public:
    zi1(){cout<<"Derived func1\n";}//函数体根本就是随便你怎么写,或者你可以不写
};
int main()
{
    Derived a;
    a.fu1();//调用父类函数
    return 0;
}


2015-06-21 21:29
w2009w
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:2
帖 子:190
专家分:542
注 册:2015-4-20
收藏
得分:0 
有错误,这样不对的!
1>d:\c++语言程序设计\7-9\7-9\7-9.cpp(25) : error C2247: 'Base::fu1' not accessible because 'Derived' uses 'private' to inherit from 'Base'
2015-06-22 10:04
w2009w
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:2
帖 子:190
专家分:542
注 册:2015-4-20
收藏
得分:0 
正确解答:
#include<iostream>
using namespace std;
class Base
{
public:
    int fu1()
    {
        cout<<"Base func 1"<<endl;
        return 0;
    }
    int fu2()
    {
        cout<<"Base func 2"<<endl;
        return 0;
    }
};
class Derived:private Base
{
public:
    int fu1(){return Base::fu1();}
    int fu2(){return Base::fu2();}
};
int main()
{
    Derived a;
    a.fu1();//调用父类函数
    return 0;
}
2015-06-22 10:21
yangfrancis
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:贵宾
威 望:141
帖 子:1510
专家分:7661
注 册:2014-5-19
收藏
得分:0 
换成公有继承看看
2015-06-22 10:59
w2009w
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:2
帖 子:190
专家分:542
注 册:2015-4-20
收藏
得分:0 
公有继承当然可以了,我要的就是私有继承的情况!
2015-06-22 11:28
绝尘鑫醉
Rank: 2
等 级:论坛游民
帖 子:2
专家分:10
注 册:2016-12-13
收藏
得分:0 
这样OK么?
#include<iostream>
using namespace std;
class Base{
    public:
        Base(){}
        ~Base(){}
        void fn1(){
            cout<<"fn1"<<endl;
        }
        void fn2(){
            cout<<"fn2"<<endl;
        }
};
class Derived:private Base{
    public:
        Derived(){}
        ~Derived(){}
        void lalala(){
            Base::fn1() ;
        }
};
int main(){
    Derived a;
    a.lalala() ;
    return 0;
}
2016-12-13 09:21
快速回复:请问C++类的私有派生,如何使用派生类的对象调用基类的函数?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.016873 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved