考虑我有A和B两个类,如下所示:
class A
{
public:
void Fun();
};
class B : public A
{
....
};
作为A类的设计师,我是否有办法强制要求派生类B和其他从A继承的类无法隐藏非虚函数Fun()(并获取某种错误)?
class A
{
public:
void Fun();
};
class B : public A
{
....
};
作为A类的设计师,我是否有办法强制要求派生类B和其他从A继承的类无法隐藏非虚函数Fun()(并获取某种错误)?
namespace revealed {
void foo( A& o ) { o.foo(); }
}
现在B类客户端总是可以执行
void bar()
{
B o;
revealed::foo( o );
}
void bar2()
{
B o;
A& ah = o;
ah.foo();
}
void bar3()
{
B o;
o.A::foo();
}
所以,几乎所有的收获都是更易于理解的注释和意图沟通。
也就是说,远非评论中所说的不可能,可用性是您默认拥有的...
B o; o.A::foo();
。@Cheersandhth.-Alf - syam