gpt4 book ai didi

C++ 私有(private)指针 "leaking"?

转载 作者:搜寻专家 更新时间:2023-10-31 00:48:27 25 4
gpt4 key购买 nike

我将创建一个类来保存一长串将传递给函数的参数。让我们使用这个较短的例子:

class ParamList{

public:
ParamList(string& a_string);
string& getString(); //returns my_string
private:
string& my_string;
}

我的问题是:my_string 是私有(private)的,但我要返回对它的引用。这在 C++ 中不是叫做私有(private)指针泄漏吗?这不是好的编程习惯吗?我希望 getString 的调用者能够获取引用并修改它。

请告诉我。

谢谢,jbu

edit1:调用者将使用 getString() 并修改返回的字符串。

最佳答案

只要满足以下条件,就完全可以返回私有(private)引用:

一个。那是一个 const引用,并且您已记录该引用何时可以失效或
B. 该引用旨在修改(即 std::vector<T>::operator[] )

虽然在某些情况下返回非常量引用很有用,但您通常应该避免使用它。这包含在 Scott Meyers' Effective C++ 中(第 3 版,第 28 项):如果您想看一看,请避免将“句柄”返回到对象内部。

关于C++ 私有(private)指针 "leaking"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2625719/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com