作者热门文章
- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我想在派生类中将基类中的公共(public)成员设为私有(private),如下所示:
class A {
public:
int x;
int y;
};
class B : public A {
// x is still public
private:
// y is now private
using y;
};
但显然“using”不能那样使用。有没有办法在 C++ 中做到这一点?
(我不能使用私有(private)继承,因为 A 的其他成员和函数必须仍然是公共(public)的。)
最佳答案
是的,使用声明技术上
允许您这样做。
你必须使用 using A::y
而不是 using y
但是请认真评估这样做是否具有设计意义。
一些观察:
您的类(class)不应有公共(public)数据。应该尽可能避免这种情况。如果坚持这个设计原则,您可能不需要在派生类中将其设为私有(private)。
坚持LSP .如果基类具有公共(public)方法,除非您进行私有(private)继承,否则如果派生类使用此类 using 声明使基类方法私有(private),则客户会感到困惑。
关于c++ - 我可以在派生类中将公共(public)成员变量设为私有(private)吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3623207/
由“CreateWindowEx(WS_EX_CLIENTEDGE, "EDIT", "", ES_MULTILINE.."创建的文本框需要\r\n 换行。我将我的 stdoutput 重定向到那个文
我是一名优秀的程序员,十分优秀!