我有一个getter方法,它返回一个声明为private的数组。
在.h:
private:
CStringArray a;
在。 CPP:
CStringArray &Define::GetDefined()
{
return a;
}
在另一个.cpp:
int size = (define.GetDefined()).GetCount();
这确实返回了int的正确值。但这是通过引用分配的正确示例吗?
答案 0 :(得分:2)
是的,虽然最终的.cpp文件中的额外大括号是不必要的,对读者没有帮助,所以你可能不应该打扰
例如
int size = define.GetDefined().GetCount();
您可能还应该提到,用户应该确保referance返回的对象没有分配到即将变为无效的堆栈的某些部分。
例如:
A& method() {
return A();
}
或即将失效的内存的任何部分:
class A{
B member;
B& get_b_ref() {
return member;
}
}
int main() {
A* a_ptr = new A();
B& b_ref = a_ptr->get_b_ref();
delete a_ptr;
b_ref.any_method(); // yikes
}
答案 1 :(得分:1)
是的,从getter返回引用是完全正确的。
如果不应该从外部修改此对象
,您甚至可能想要返回const Array&