请教public继承时,派生类中的函数的访问权限,由谁决定的问题?
比如下面示例,基类中有一个fn(),是public的,派生类是public继承的。
但是派生类中的fn(),好象其访问权限还是取决于函数定义上面那一行的 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 //fn()的访问权限是这个地方决定的??????
{
//public: //fn()的访问权限是这个地方决定的??????
void fn()
{
cout <<"derived" <<endl;
}
};
derived aa; //全局变量 void main()
{
derived my1;
//base* p1;
//p1=&my1;
//p1->fn();
my1.fn(); //如果注释了fn()上面那行的 public: ,则此句会报错
}
比如下面示例,基类中有一个fn(),是public的,派生类是public继承的。
但是派生类中的fn(),好象其访问权限还是取决于函数定义上面那一行的 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 //fn()的访问权限是这个地方决定的??????
{
//public: //fn()的访问权限是这个地方决定的??????
void fn()
{
cout <<"derived" <<endl;
}
};
derived aa; //全局变量 void main()
{
derived my1;
//base* p1;
//p1=&my1;
//p1->fn();
my1.fn(); //如果注释了fn()上面那行的 public: ,则此句会报错
}
派生类中的fn(),其访问权限是由哪个public决定的,
两个public,上面的是指明继承方式,是public继承的。按照继承的理论,基类中是public,以public继承后也应该是public呀,为何还是底下的那个public决定呢?
下面的public,是指明函数是public的。
函数,并在派生类中重新实现成public(一般不会这么用,但它的语法支持)。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~网上搜到的。也就是说派生类中的fn()参与覆盖了。那么它的访问权限如果在public继承情况下应该由下面的public来决定的。
protected,private继承很少见的。我都没注意过