【发布时间】:2017-05-26 12:59:46
【问题描述】:
我正在为我正在制作的游戏编写自定义物理引擎,我的物理对象类有大量变量(距离、速度、加速度、质量、重力、力、脉冲持续时间等......)。为每个变量创建一个 setter 和 getter 函数会影响性能吗? (在给定时间将至少有 100 个此类的实例)
我还应该创建setter 和getter 吗?听说公共变量是个很不好的做法,但是有很多变量,这可以是一个例外吗?
【问题讨论】:
-
“我听说公共变量是非常糟糕的做法”你从哪里听说的?
-
C++ 中没有专门的 getter 和 setter,只有普通的成员函数。
-
试试看。措施。基准。想想你的设计!虽然不存在性能影响,但公共成员变量或公共 getter/setter 函数之间真的有区别吗?基本的 OO 原则对封装有什么看法?如果你有getter/setter函数,成员变量真的被封装了吗?
-
当您希望封装实现时,请使用 getter 和 setter。例如,可能由变量或其他值的计算提供的值。
-
答案是:视情况而定。假设您有一个带有
Point getPoint()的 Shape 实例,它实际上会从不同的内部值创建一个Point实例。这是一个很好的吸气剂示例。但是您真的需要int Point::getX()的吸气剂还是我们可以直接调用myShape.getPoint().x吗?
标签: c++ performance optimization