| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 431 人关注过本帖
标题:私有继承问题,大侠请进!!!
只看楼主 加入收藏
a632034079
Rank: 2
等 级:论坛游民
帖 子:115
专家分:34
注 册:2009-10-3
结帖率:86.11%
收藏
已结贴  问题点数:20 回复次数:2 
私有继承问题,大侠请进!!!
我想问下一个派生类用私有继承,那么相对于派生类来说基类的数据成员和成员函数应该都变成了私有的了,调用数据成员时则要用申请函数做个接口来调用,那为什么调用成员函数时就可以直接调用了吗???下面代码加粗的地方是疑问的地方,请高手赐教!!!


#include <iostream>
#include <string>
using namespace std;

class person
{
public:
    void display()
    {
        cout << "XM : " << name << endl;
        cout << "NL : " << age << endl;
        cout << "XB : " << sex << endl;
    }

    /*void s_sex(string x)
    {
        sex=x;
    }*/

    string name;
//private:
    string sex;
protected:
    int age;

};

class student : /*public*/private person
{
public:
    void s_display()
    {
        display();    //为什么可以直接调用person类的函数???
        cout << "XH : " << stuno << endl;
    }

    void s_sex(string s)
    {
        sex=s;
    }
    void n_name(string n)
    {
        name=n;
    }
    void a_age(int a)
    {
        age=a;
    }

    string stuno;
};

class student1:public student
{
public:
    string zhiwu;

    /*void nianl(int s_age)
    {
        age=s_age;
    }*/
    void s_display1()
    {
        s_display();
        cout << "ZW : " << zhiwu << endl;
    }
};

int main()
{
    student1 stu1;
    //stu1.name="liu ce";
    stu1.n_name("liu ce");
    stu1.a_age(21);
    stu1.s_sex("MAN");
    stu1.stuno="066";
    stu1.zhiwu="xuexiweiyuan";
    //stu1.nianl(21);
    stu1.s_display1();

    return 0;
}

[ 本帖最后由 a632034079 于 2010-8-5 15:56 编辑 ]
搜索更多相关主题的帖子: 继承 
2010-08-05 15:54
Devil_W
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
威 望:9
帖 子:1160
专家分:1797
注 册:2009-9-14
收藏
得分:20 
以下是引用a632034079在2010-8-5 15:54:38的发言:

我想问下一个派生类用私有继承,那么相对于派生类来说基类的数据成员和成员函数应该都变成了私有的了,调用数据成员时则要用申请函数做个接口来调用,那为什么调用成员函数时就可以直接调用了吗???下面代码加粗的地方是疑问的地方,请高手赐教!!!
 
 
#include  
#include  
using namespace std;
 
class person
{
public:
    void display()
    {
        cout << "XM : " << name << endl;
        cout << "NL : " << age << endl;
        cout << "XB : " << sex << endl;
    }
 
    /*void s_sex(string x)
    {
        sex=x;
    }*/
 
    string name;
//private:
    string sex;
protected:
    int age;
};
 
class student : /*public*/private person
{
public:
    void s_display()
    {
        display();    //为什么可以直接调用person类的函数???
        cout << "XH : " << stuno << endl;
    }
 
    void s_sex(string s)
    {
        sex=s;
    }
    void n_name(string n)
    {
        name=n;
    }
    void a_age(int a)
    {
        age=a;
    }
 
    string stuno;
};
 
class student1:public student
{
public:
    string zhiwu;
 
    /*void nianl(int s_age)
    {
        age=s_age;
    }*/
    void s_display1()
    {
        s_display();
        cout << "ZW : " << zhiwu << endl;
    }
};
 
int main()
{
    student1 stu1;
    //stu1.name="liu ce";
    stu1.n_name("liu ce");
    stu1.a_age(21);
    stu1.s_sex("MAN");
    stu1.stuno="066";
    stu1.zhiwu="xuexiweiyuan";
    //stu1.nianl(21);
    stu1.s_display1();
 
    return 0;
}

类public可不可以调自己的private函数?

所谓的不能调私有,是说对象的不能掉。

如果你有一个 student的对象,
student st;
st.display();//这里是不能调的。
2010-08-05 16:29
a632034079
Rank: 2
等 级:论坛游民
帖 子:115
专家分:34
注 册:2009-10-3
收藏
得分:0 
以下是引用Devil_W在2010-8-5 16:29:51的发言:


类public可不可以调自己的private函数?

所谓的不能调私有,是说对象的不能掉。

如果你有一个 student的对象,
student st;
st.display();//这里是不能调的。

谢谢了,你的话让我豁然开朗!!!
2010-08-05 16:38
快速回复:私有继承问题,大侠请进!!!
数据加载中...
 
   



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

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