Getters的最佳实践
Best Practice for Getters
我知道"best"是相对的,并且随着不同的情况而变化,但为什么要选择通过传递变量而不是指向变量的指针来实现getter呢。既然传递指针通常更快/开销更少,为什么不一直使用指针/引用而不是传递变量呢?我只能看到问题,如果原始变量被删除,那么你会留下空指针,但在类级变量的情况下,这不应该是一个问题,对吧?
示例:
int getNum() {return num}
vs
void getNum(int* toGet) {toGet = num}
使用T getter()
或T getter() const
,除非返回值没有复制/移动构造函数。唯一的例外是显著的性能问题。至于指针,我认为使用void getter(T* pointer)
的唯一原因是将POD数据写入预先分配的缓冲区。
当您由于性能原因将要选择void getter(T& value)
时,请查看编译器是否执行"返回值优化"以帮助您。在大多数情况下,它确实如此,所以让编译器为您工作就好了。
当您确定RVO不适用于您的情况时,请检查是否经常调用此代码(可能是调用方函数中的性能无关紧要)?
当您可以向任何相关人员提供getter中需要引用或指针的证据时,请使用引用/指针替代方案。如上所述,指针和引用比"按值返回"更不明显,也更难支持。不要因为可以就在代码中添加潜在的错误位置。
相关文章:
- 在C#中处理C++指针而不使用unsafe的最佳方法
- 在C++中,将大的无符号浮点数四舍五入为整数的最佳方法是什么
- 实现无开销push_back的最佳方法是什么
- 在c代码之间共享数据的最佳方式
- 使用std::source_location报告错误的最佳实践
- 派生类销毁的最佳实践是什么
- 将寄存器设计成可由C和C++访问的外设的最佳实践
- 在两台机器之间进行时间戳的最佳c++chrono函数是什么
- 使用QQuickFramebufferObject时同步数据的最佳方式是什么
- 在C++中向零方向近似的最佳方法
- 使用不同的CRT将新的C++代码与旧的(二进制)组件隔离开来的最佳方法是什么
- 从嵌套在std::映射中的std::列表中删除元素的最佳方式
- 如果条件为TRUE(最佳方式?),则在do while循环中后置增量
- 检测win32服务创建和删除的最佳方法
- 在reactor中存储eventHandlers的最佳方式是什么
- 在C++中样板"冷/never_inline"错误处理技术的最佳方法是什么?
- 在 c++ 中对类中的 c 字符串动态数组进行排序的最佳方法是什么?
- 在AVX通道中混洗的最佳方式
- 程序顶部的声明与定义(最佳实践)
- Getters的最佳实践