【发布时间】:2011-03-21 08:56:31
【问题描述】:
我有简单的类方法,比如
Task TaskSample::Create(void)
{
Task task;
return task;
}
并收到临时地址的警告。这段代码有问题吗? 我不想在这里使用指针
【问题讨论】:
-
使用类时,返回类对象并不是很有效(尤其是在任务类/结构很大的情况下)。
-
@Phong:我最近发现 NRVO(命名返回值优化)会起作用。该标准允许在从方法返回类实例时绕过类的复制构造函数的优化。跨度>
-
@Phong:根据上下文,not 返回的效率可能会降低,因为您会强制客户端在调用函数之前默认构造您的对象。
-
@zigi,@Billy ONeil 的答案是正确的,您提交的代码没有任何问题。您需要向我们提供更多详细信息。您收到的错误消息到底是什么?究竟是哪一行代码发出了警告?您是否在代码中调用此方法,例如 "Task &t = TaskSample::Create()" ?
-
不,您没有从该代码中得到类似的警告。您的代码是假的,您对警告的描述是假的。发布您收到的真实代码或真实警告。