| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1059 人关注过本帖
标题:我用的是public继承,但是为何子类的函数不是public的呢?
只看楼主 加入收藏
ggyy66
Rank: 1
等 级:新手上路
帖 子:427
专家分:0
注 册:2007-8-14
结帖率:86.25%
收藏
 问题点数:0 回复次数:6 
我用的是public继承,但是为何子类的函数不是public的呢?
我用的是public继承,但是为何子类的函数不是public的呢?

#include <iostream.h>

class base;

base * pbase;

class base
{
public:
   base()
   {
  pbase=this;
         
   }
   virtual void fn()
   {
  cout<<"base"<<endl;
   }
};

class derived:public base
{
 void fn()
 {
  cout<<"derived"<<endl;
 }
};


derived aa;  //全局变量

void main()
{
 derived my1;
 my1.fn();
}

搜索更多相关主题的帖子: 函数 继承 public 子类 
2009-10-09 13:56
ggyy66
Rank: 1
等 级:新手上路
帖 子:427
专家分:0
注 册:2007-8-14
收藏
得分:0 
fn()在基类中是public函数,但是为何到了子类中,就没有public访问权限了呢?

2009-10-09 13:57
flyingcloude
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
威 望:6
帖 子:598
专家分:1512
注 册:2008-1-13
收藏
得分:0 
因为你在子类中已经把fn()定义成私有的拉

你能学会你想学会的任何东西,这不是你能不能学会的问题,而是你想不想学的问题
2009-10-09 14:41
ggyy66
Rank: 1
等 级:新手上路
帖 子:427
专家分:0
注 册:2007-8-14
收藏
得分:0 
以下是引用flyingcloude在2009-10-9 14:41:55的发言:

因为你在子类中已经把fn()定义成私有的拉
但是我是public继承呀,
难道public继承在这里不起作用吗?
访问权限只依据
类中的:
public:
private:
protected:
吗:
class b :public a
后面的 public a 不起作用吗?


2009-10-09 15:05
flyingcloude
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
威 望:6
帖 子:598
专家分:1512
注 册:2008-1-13
收藏
得分:0 
回复 4楼 ggyy66
这个public是针对父类的成员函数被子类继承后所具有的访问权限

你能学会你想学会的任何东西,这不是你能不能学会的问题,而是你想不想学的问题
2009-10-09 17:00
Chost
Rank: 1
等 级:新手上路
帖 子:7
专家分:1
注 册:2009-9-21
收藏
得分:0 
首先说明void fn()是虚函数,而在类derived中您没有说明此函数的访问权限,所以默认它的访问权限为private。
在main()函数中,通过类derived的对象my1调用fn()函数,采用的是静态联编,即它调用的是类derived类中的
fn()函数,而不是调用继承来的fn()函数,所以执行时显示不能访问私有成员函数。
2009-10-09 20:31
ggyy66
Rank: 1
等 级:新手上路
帖 子:427
专家分:0
注 册:2007-8-14
收藏
得分:0 
明白了,我如果在子类中不进行覆盖,是可以调用的,但是我在子类中重写这个函数,其访问权限应该取决于子类的限定。

2009-10-10 08:36
快速回复:我用的是public继承,但是为何子类的函数不是public的呢?
数据加载中...
 
   



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

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