作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我编写了一个具有 protected 继承性的虚函数
#include<iostream>
using namespace std;
class D{
private:
int a;
protected:
int b;
public:
D(){a=b=c=0;}
virtual void f(){
a=2;
cout <<"D::f"<<a<<endl;
}
void g(){cout<<"D::g"<<a<<endl;}
int c;
};
class E:protected D{
private:
int a,b,c;
public:
E(){a=b=c;}
void f(){
a=3;
cout<<"E::f"<<a<<endl;
}
void g(){cout<<"E::g"<<a<<endl;}
};
int main(){
D *d = new E;
d->f();
d->g();
return 0;
}
但如果我使用它,它会变成无法访问的基础。
如果我把它改成 public inherience ,它可以运行。
我想知道为什么我不能使用 D *d = new E;具有私有(private)和 protected 继承权?
提前致谢。
最佳答案
private
或 protected
基地意味着该基地对世界不可访问。因此,当您编写需要从派生基数到不可访问基数的转换的表达式时,由于可访问性规则,这是被禁止的因为转换需要在调用点进行这是世界的一部分。
在面向对象的术语中,private
或protected
基不定义is-a 关系。它实际上是一种 implemented-in-terms-of 关系,简单来说就是组合。
关于c++ - 用虚函数保护继承,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14245553/
我有一个特别的问题想要解决,我不确定是否可行,因为我找不到任何信息或正在完成的示例。基本上,我有: class ParentObject {}; class DerivedObject : publi
在我们的项目中,我们配置了虚 URL,以便用户可以在地址栏中输入虚 URL,这会将他们重定向到原始 URL。 例如: 如果用户输入'http://www.abc.com/partner ',它会将它们
我是一名优秀的程序员,十分优秀!