gpt4 book ai didi

c++ - 这两个类是否违反封装?

转载 作者:可可西里 更新时间:2023-11-01 16:24:17 26 4
gpt4 key购买 nike

class X
{
protected:
void protectedFunction() { cout << "I am protected" ; }
};

class Y : public X
{
public:
using X::protectedFunction;
};

int main()
{
Y y1;
y1.protectedFunction();
}

这样我就可以公开基类的功能之一。

  1. 这不是违反了封装原则吗?
  2. 是否有关于为什么这是标准的具体原因?
  3. 这个有什么用吗,或者它会在新标准中改变吗?
  4. 标准中是否有任何与此相关的未解决问题?

最佳答案

你自己做的。
你可以写

class Y : public X
{
public:
void doA()
{
protectedFunction();
}
};

int main()
{
Y y1;
y1.doA();
}

我认为没有任何理由担心它。
protected 函数是继承树中的可重用逻辑片段。如果有一些内部逻辑或限制,您可以隐藏它们,或者在您的情况下,如果您确定这不会伤害任何人,您可以公开它们。

关于c++ - 这两个类是否违反封装?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2094717/

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