gpt4 book ai didi

c++ - 为了方便起见,我应该避免公开私有(private)字段变量吗?

转载 作者:太空狗 更新时间:2023-10-29 20:33:47 26 4
gpt4 key购买 nike

我有两个对象,A 和 B。现在,B 将 A 存储为局部类变量。

class B
{
A myA;
}

现在,B 有一堆使用其内部 myA 做一些事情的方法,我可以使用这些方法,因为它们是公开的。

但有时,我需要使用 myA 本身。所以我所做的就是公开它,然后我可以编写 myB.myA.someMethodFromA()

这样可以吗,还是不好的风格?我的意思是,我知道我可以通过 B 类中的方法为 myA 提供间接访问器,但是当我可以直接访问 myA 时,这似乎没有必要。

例如,如果 myA 有一个方法 doStuffviaA,我宁愿说 myB.myA.doStuffViaA(),而不是先有在 B 中写一个方法说

void doStuffViaB() { myA.doStuffViaB() }

但是,当然,将 myA 公开意味着可以在 B 不知情的情况下更改它。做什么?

最佳答案

是的,将其设置为public 可以规避封装,并且代码可能会悄悄进入,从而使您的对象处于定义不明确的状态。

一个折衷方案是供应

const A& getMyA() const
{
return myA;
}

从那时起,如果使用此函数访问,至少只能对 myA 成员执行 const 函数。当然,我希望 doStuffViaA const,然后你会写

myB.getMyA().someMethodFromA();

关于c++ - 为了方便起见,我应该避免公开私有(private)字段变量吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53063715/

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