鱼C论坛

 找回密码
 立即注册
查看: 3740|回复: 2

c++关于private和protected的一个例子问题

[复制链接]
发表于 2012-9-13 22:37:13 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
class Animal
{
        public:
        Animal(string mouth);
        ~Animal();
        protected:
    string mouth;
    private:
        void eat();
};
class pig:public Animal
{
   public:
   pig(int x,string mouth);
   ~pig();
   void climb();
   protected:
   int temp;
};
int main()
{
    pig test(1,"hello");
        test.climb();
        return 0;
}
void pig::climb()
{
    cout<<"i am climb"<<endl;
/*  cout<<temp<<endl;
    cout<<mouth<<endl;
*/
    this->eat();
}
通过将eat()定义为private后,子类也无法访问,上面的代码是运行不通过的。
那么我就是想问,当我把class pig:private Animal的时候为什么子类又可以访问基类的eat()了,private不是将基类所有的变量和函数都看成私有的么,子类应该无法访问呐???求了解的同学解答下,先谢谢了!!!
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2012-9-14 21:25:43 | 显示全部楼层
上面的代码能编译通过,不会吧!
[Error] D:\Program\CPP\C++Primer\Test2\main.cpp:12: error: `void Animal::eat()' is private
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2012-9-17 11:55:23 | 显示全部楼层

不好意思可能我没表达清楚,我的意思是说private,肯定就不能访问了 ,但是当我把eat()声明成public,再在继承时使用pig:private Animal的话,却能够访问eat了。就是不明白为什么是这样。
小甲鱼最新课程 -> https://ilovefishc.com
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-11-15 03:34

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表