我注意到可能有不同的方法来禁用或隐藏从父类继承的一些类成员函数。
例如,给定以下基类:
class Foo {
public:
void funcA() {}
};
Run Code Online (Sandbox Code Playgroud)
class Bar : public Foo {
private:
Foo::funcA;
};
Run Code Online (Sandbox Code Playgroud)
(编辑:我注意到稍后选项 1将出现错误clang:“ISO C++11 不允许访问声明;请改用 using 声明”)
class Bar : public Foo {
private:
using Foo::funcA;
};
Run Code Online (Sandbox Code Playgroud)
class Bar : public Foo {
public:
void funcA() = delete;
};
Run Code Online (Sandbox Code Playgroud)
哪种方法更好?或者说它们是一样的吗?
在尝试执行此操作之前,请阅读@JeffCoffin 等人下面的评论。阿尔:
事实上,您想要禁用或隐藏父类中的某些内容往往表明您可能不应该将其用作父类
这三个选项并不相同。对于前两个,我不确定是否有任何真正的区别(我无法测试它们,因为我没有计算机,但我认为它们是相同的)。但第三个绝对不同——它抹掉了方法。因此,在第三种情况下,您将无法从类的其他方法中调用该方法,而在前两种情况下,您可以这样做。
| 归档时间: |
|
| 查看次数: |
6280 次 |
| 最近记录: |