【发布时间】:2011-06-04 04:18:33
【问题描述】:
鉴于我们在基类中重载了方法,以及作为私有/受保护继承的派生类。
- 我们能否只恢复重载方法的一个/几个原始访问级别?
- 在 GCC 4.4.0 上,我尝试将基本方法置于受保护的访问权限下,然后使用私有访问权限继承它。当我尝试将访问级别恢复为公共时,它可以工作!这是它假设的工作方式吗?还是编译器上的错误?据我了解,不应使用恢复访问级别来提升或降低成员的访问级别。
代码sn-p:
class base {
public:
void method() {}
void method(int x) {}
protected:
void method2() {}
};
class derived : private base {
public:
base::method; // Here, i want to restore only the none parameterized method
base::method2; // method2 is now public??
};
【问题讨论】:
-
BTW- 是像
base::method这样的声明,完全等同于using base::method? -
@Kos,是的,但在 C++0x 中说
base::method;不再有效。它已被 n3225 草案删除。
标签: c++ overloading