37334
2015-04-14 14:22
采纳率: 45.5%
浏览 1.9k

写了个c++类的成员函数,返回引用

 test & test::count_price(const test &a){
  price+=a.price;
  return *this;
}

原本想写成这样:

  test &c=a.count_price(b);//获取a的引用

结果意外写成:

 test c=a.count_price(b);

编译也能通过,问题就来了,为什么这样做可以呢?引用的实质是什么呢?

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

2条回答 默认 最新

  • oyljerry 2015-04-14 14:25
    已采纳

    你不理解的是因为:引用返回后调用拷贝构造函数生成了对象c

    另一个就是正常的引用赋值。

    点赞 打赏 评论
  • woaibcheng 2015-04-20 10:05

    并不是生成了对象C,而是拷贝构造产生的临时对象赋值给了c.

    点赞 打赏 评论

相关推荐 更多相似问题