【发布时间】:2010-04-12 21:52:48
【问题描述】:
我将创建一个类来保存将传递给函数的一长串参数。让我们用这个更短的例子:
class ParamList{
public:
ParamList(string& a_string);
string& getString(); //returns my_string
private:
string& my_string;
}
我的问题是:my_string 是私有的,但我正在返回对它的引用。这不是在 C++ 中称为私有指针泄漏之类的东西吗?这不是很好的编程习惯吗?我希望 getString 的调用者能够获取引用并对其进行修改。
请告诉我。
谢谢, jbu
edit1:调用者将使用 getString() 并修改返回的字符串。
【问题讨论】:
-
将引用作为成员是可疑的做法,除非您确切地知道自己在做什么。但我在这段代码中没有看到任何指针。
-
好的。我不知道我在做什么。如果 my_string 是一个指针,而 getString 返回一个指向字符串的指针呢?
-
它仍然应该返回一个
const string* -
更多的是“为什么这个类存在?”的问题。它根本不“拥有”字符串对象,那么为什么要绕过这个类而不是 ACTUAL 字符串对象呢?它只是包装的另一层。它甚至不分配字符串,只是对字符串的引用,因此在其他地方仍然必须拥有该字符串,要么在堆栈的更高位置(可能在另一个类中),要么在全局变量中。不管怎样,为什么这个类存在?
-
@kevin:它存在每个参数对象都有一起去的成员。将参数对象的 LIST 传递给函数。
标签: c++ memory-leaks pointers