C++ 为什么可以';我们不能在继承中更改基类中函数的访问级别吗?
在下面的代码中,如果基类派生为protected,则代码不起作用。为什么? 在继承具有虚拟函数的基类时,究竟何时使用保护和私有访问说明符? 另外,既然子类可以访问父类,为什么基类的指针不能指向它的父类? 通过以下代码理解这些问题C++ 为什么可以';我们不能在继承中更改基类中函数的访问级别吗?,c++,inheritance,polymorphism,C++,Inheritance,Polymorphism,在下面的代码中,如果基类派生为protected,则代码不起作用。为什么? 在继承具有虚拟函数的基类时,究竟何时使用保护和私有访问说明符? 另外,既然子类可以访问父类,为什么基类的指针不能指向它的父类? 通过以下代码理解这些问题 #include<iostream> using namespace std; class A { public: virtual void show() { cout<<"In A"<<endl;
#include<iostream>
using namespace std;
class A
{
public:
virtual void show()
{
cout<<"In A"<<endl;
}
};
class B:public A//--QUESTION-----Making A protected is giving an error. Why?
{
public:
//protected: works..
void show()
{
cout<<"In B"<<endl;
}
};
class C : public B//Making B protected is giving an error. Why?
{
public:
void show()
{
cout<<"In C"<<endl;
}
};
int main()
{
A obj1;
B obj2;
C obj3;
A *obj;
B *objp;
C *objp3;
obj=&obj2;
obj->show();
/*The following 4 lines also do not work. Since a child class has access to parent class, why can't a pointer of base class point to its parent class?*/
//objp3=&obj2;
//objp3->show();
objp=&obj1;
objp->show();
}
#包括
使用名称空间std;
甲级
{
公众:
虚拟虚空显示()
{
cout如果您通过protected
导出A
,那么您正在将classA
具有public
的所有内容设置为protected
class B:protected A
{
public:
//protected: works..
void show()
{
cout<<"In B"<<endl;
}
};
B类:受保护的A类
{
公众:
//受保护:工作。。
无效显示()
{
下面的问题和答案有什么不清楚的吗?但是我们可以超越变量的访问级别,那么为什么不能超越函数的访问级别呢?