gpt4 book ai didi

c++ - 在 C++11 中将结构作为输出参数传递

转载 作者:太空狗 更新时间:2023-10-29 23:44:34 25 4
gpt4 key购买 nike

在 C++11 中将结构作为输出传递的最佳实践是什么?

当所有权由外部函数维护时,结构应该在外部函数中创建还是在内部函数中创建?

而且,它应该是 shared_ptr 还是 unique_ptr?

例如,假设我有一个复杂的结构:

struct Error {
string Code;
string Message;
string Details;
string Command;
};

struct Response {
stringstream Data;
bool Success;
Error Error;
};

然后,从调用函数,我想声明:

Response r;
getResponse( url, &r );

getResponse 应该定义为:

getResponse( string, shared_ptr );    or
getResponse( string, unique_ptr );

还有,应该如何声明字符串和字符串流?它们也应该是 shared_ptr 吗?

在这种情况下,getResponse 函数在响应完成后不希望与响应有任何关系,响应本身的生命周期应由调用者决定。

声明和填充结构的最佳做法是什么?

最佳答案

现代编译器非常擅长优化函数返回值的方式,因此在有意义的情况下按值返回是很常见的:

// Just return by value
Response getResponse(const std::string& url)
{
Response r;

// ...

return r;
}

关于c++ - 在 C++11 中将结构作为输出参数传递,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28121942/

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