讨论一个问题:NULL引用。我返回了一个NULL引用

千梦一生 2020-07-01 10:24:57
昨天写的代码,由于对引用认识不到位,写出了NULL引用。

提供接口函数:

template<class T>
T &cycleList<T>::getObject(const int token)
{
if(ifWorking[token])//有效令牌
{
return r_getObject(token);
}else
{
return nullptr;
}
}//这段代码写下来没有提示错误,不过暂未进行编译


今天我突然想起,这里返回的引用,说起来就如同在返回一个对象。【他们说 引用相当于对象的别名】。
所以这里是 对象 = null?
当然,引用在下层里其实相当于指针。指针能置NULL,所以从这个角度引用能置NULL也不是说不过去。

所以想请教一下大佬们,关于这里return nullptr到底是在干嘛?
总觉得这里这个操作有些隐藏的知识我没弄明白。【对象 = null or 指针 = null。如果是指针置为null,外边调用者收到这个null返回时,这引用是谁的别名? 如果是对象置为null?这样可以吗?】

...全文
141 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
千梦一生 2020-07-01
  • 打赏
  • 举报
回复
谢谢两位老师的解释。
这个问题也是我在外面拿来判断返回值 == nullptr报错时,才想到的这个东西。

看来确实是有问题的,可能需要再深思一下这个东西。
谢谢。
  • 打赏
  • 举报
回复
vs2015 无法编译通过。你的VS版本是多少?
真相重于对错 2020-07-01
  • 打赏
  • 举报
回复
首先说明模板函数模板类,只有和具体的模板参数结合才形成具体的类型和函数,你没有调用或者实例化就不会出错。 返回引用的函数,如果你返回一个nullptr,必然出错

64,318

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧