gpt4 book ai didi

c++ - 我可以在派生类中将公共(public)成员变量设为私有(private)吗?

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:27:06 24 4
gpt4 key购买 nike

我想在派生类中将基类中的公共(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

但是请认真评估这样做是否具有设计意义。

一些观察:

  1. 您的类(class)不应有公共(public)数据。应该尽可能避免这种情况。如果坚持这个设计原则,您可能不需要在派生类中将其设为私有(private)。

  2. 坚持LSP .如果基类具有公共(public)方法,除非您进行私有(private)继承,否则如果派生类使用此类 using 声明使基类方法私有(private),则客户会感到困惑。

关于c++ - 我可以在派生类中将公共(public)成员变量设为私有(private)吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3623207/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com