在getter类型方法中,我想知道哪个是最好的,对此的看法似乎有所不同,因为一方面你通过引用返回来破坏封装,但另一方面,如果你想要的话,有很多开销可以按值返回该成员首先是可变的。在这些情况下是否最好总是通过引用返回并让被调用者根据上下文决定是否要复制?
答案 0 :(得分:3)
我相信返回const引用将是您最好的选择。这样您就可以避免复制大量数据的开销,但也不允许从外部进行更改。
答案 1 :(得分:0)
现代编译器可以按值优化返回并删除任何复制/移动开销[1] [2]。所以你不必担心。
决定拥有副本或返回引用应该是API设计者规则而不是客户端,您应该判断此对象是否应该是可变的,并根据此类的用例及其要求定义API应该履行。