这是通过引用分配的正确示例吗?
Is this a correct example of assigning by reference?
我有一个getter方法,它返回一个声明为私有的数组。
在 .h 中:
private:
CStringArray a;
在.cpp:
CStringArray &Define::GetDefined()
{
return a;
}
在另一个.cpp:
int size = (define.GetDefined()).GetCount();
这确实返回了正确的 int 值。但这是通过引用分配的正确示例吗?
是的,尽管最终.cpp文件中的额外大括号是不必要的,对读者没有帮助,所以你可能不应该打扰
例如。
int size = define.GetDefined().GetCount();
您可能还应该提到,用户应该确保通过引用返回的对象未分配给即将变为无效的堆栈的某些部分。
例如:
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
}
是的,从 getter 返回引用是绝对正确的。
你甚至可能想要返回 const Array &,如果这个对象不应该从外部修改
相关文章:
- 将引用分配给局部变量,如果局部变量超出范围,它会超出范围吗?
- 为什么在将 are 值引用分配给时被视为 l 值引用?
- 通过引用分配向量
- 如何在C++中将常量引用分配给函数中的指针
- 为什么我不能直接将返回的引用分配给指针?
- 何时将类的引用分配给其父类的 instace
- 这是通过引用分配的正确示例吗?
- 当我们在 c++ 中将常量整数引用分配给整数指针时,行为是什么
- 引用分配的运算符重载
- 将右值引用分配给成员变量
- 将常量引用分配给非常量对象
- 正在为返回的引用分配空间
- 是否存在通过引用分配shared_ptr的用例
- 将引用分配给引用是一个有效的操作
- 将引用分配给新创建的堆栈分配对象时会发生什么
- 是否可以在不同位置为一个引用分配不同的值
- 将堆分配的引用分配给堆栈分配的变量
- 在pybind11中引用c++分配的对象
- 将一个数组中的引用分配给另一个数组 - "warning: target of assignment not really an lvalue"
- C++将常量引用分配给实例变量(内存问题?)