假设我们有两个类,Base并且Derived.有两种方法,getX并且setX,这是公开的,使用受保护的INT x与用户进行交互.Base构造设置x为1,Derived构造设置为x到3.
class Base {
public:
Base();
int getX();
void setX(int n);
protected:
int x;
}
int Base::getX() {
return x;
}
void Base::setX(int n) {
x = n;
}
Base::Base() : x(1) {
}
class Derived : public Base {
public:
Derived();
}
Derived::Derived() : x(3) {
}
Run Code Online (Sandbox Code Playgroud)
该Derived班已全面进入从基地的方法.大.
让我们说由于某种原因我不希望setX这个Derived类的用户可以使用.我有几种方法可以做到这一点.
1)Redeclare setX为私有Derived,因此阴影阻止用户完全访问该方法.
2)Redeclare x作为私有const int in Derived.但是,这会导致setX和getX与Base :: x一起使用.
3)使Base :: setX成为一个虚函数,制作一个什么都不做的Derived :: setX函数.
处理这个问题的最佳方法是什么?
从Derived公开衍生出来Base,你要做的事情没有多大意义.您应该使用private或protected继承,然后Derived仅提供Base您需要的方法的访问权限,而不是方式.
| 归档时间: |
|
| 查看次数: |
1492 次 |
| 最近记录: |