我目前在Qt等C++工作.我正在拥有具有私有数据成员和公共成员函数的类.我有班级中可用的数据成员的公共getter和setter.
现在我的问题是,如果我们的类中有数据成员的getter和setter,那么将这些数据成员设置为私有的重点是什么?我同意基类中的私有数据成员听起来合乎逻辑.但除此之外,拥有私人会员以及他们的吸气者和制定者对我来说似乎并不合乎逻辑.
或者我们可以将所有变量都公开,以便根本不需要getter和setter吗?拥有那些是一个好习惯吗?我知道让私有成员确保数据抽象,但让getter和setter实际上可以很容易地访问这些变量.欢迎任何关于此的指示.
有时我需要暴露一些班级成员.例如,在以下示例中class Mechanic可能需要直接访问Engine组件.我已多次读过所有字段都应该由mutator(accessor)方法访问,原因有几个.但是在提供非const引用getter时是否有任何优势:
class Car
{
public:
Engine & engine()
{
return m_engine;
}
//as a consequence you will also need to provide const version
const Engine & engine() const
{
return m_engine;
}
private:
Engine m_engine;
}
Run Code Online (Sandbox Code Playgroud)
简单地将引擎组件公开:
class Car
{
public:
Engine engine;
}
Run Code Online (Sandbox Code Playgroud)
您也可以替换public使用protected,如果你不喜欢这样的例子.在现实生活中,当涉及到System.in或者,你在Java中有类似的东西System.out.看起来,要完全符合某些人的说法,你需要执行类似的调用System.getInstance().getOut().println("hello world").在这种情况下,除了很多官僚代码外,我没有看到任何好处.