这是一个面试问题。我不是C ++专家,所以我需要一些帮助来找到这个问题的答案(我首先想要理解这个问题......这是一个有效的问题吗?)
问题:
假设我有一个派生的B类 来自A级,我想重用 一些但不是A的所有方法。 我如何限制访问 选择超类的方法?
谢谢!
答案 0 :(得分:10)
我认为
A
A
对象中可以访问B
的哪些方法。 using
指令解决了您的问题。例如:
class A
{
public: // or protected for that matter
void foo();
void bar();
};
class B : private A // or protected, depending on whether
// you want subclasses of B to expose
// some methods from A themselves
{
public:
using A::foo;
};
使foo
可用于B
课,但不能bar
。但需要注意的是,using A::foo
会显示foo
的所有重载。
答案 1 :(得分:3)
他们可能希望听到的答案是,您可以将这些方法放在基类的protected
部分中,派生类不应该看到的方法应该进入{{ 1}}部分。
然而,退一步后,您可以通过指出可能有更好的重复使用代码的措施来获得额外分数,具体取决于函数的功能(例如使用标题中不可见的自由函数)文件)。