【发布时间】:2014-11-19 04:15:36
【问题描述】:
有一个班级CBase。
class CBase
{
...
CBase &Create()
{
return *this;
}
...
}
如果我声明一个左值引用和一个指针,
CBase &kk = CBase().Create();
CBase *pp = &( CBase().Create() );
kk 是悬空引用,pp 是悬空指针吗?
我认为kk 和pp 悬而未决。因为调用CBase() 无疑会创建一个临时对象,所以派生类CBase().Create() 也应该是。但是,Xcode(6.1 版)没有给出警告或错误消息。
谁能给出一些提示或告诉我 C++11 文档在哪里描述了这些行为?还是我错了?
【问题讨论】:
-
当然它不会在编译时发出警告/错误。它不知道
Create()在运行时调用时会返回对*this的引用。
标签: c++ temporary-objects dangling-pointer