wkq清秋枫叶
驱动小牛
驱动小牛
  • 注册日期2004-06-17
  • 最后登录2008-08-07
  • 粉丝1
  • 关注0
  • 积分53分
  • 威望8点
  • 贡献值0点
  • 好评度4点
  • 原创分0分
  • 专家分0分
阅读:1359回复:3

关于引用的这种用法正确吗?

楼主#
更多 发布于:2004-10-23 10:06
假如SimpleCat是一个已经定义了copy constructor的类,那么能否定义如下的函数?
    SimpleCat FunctionFour(SimpleCat &theCat)
{
   .........;
   return theCat;
}
   我已经实验过,以下几种函数的定义方法完全正确:
   SimpleCat FunctionOne(SimpleCat theCat)
{
   .........;
   return theCat;
}
  或者:
   SimpleCat *FunctionTwor(SimpleCat *theCat)
{
   .........;
   return theCat;
}
  或者:
   SimpleCat &FunctionThree(SimpleCat &theCat)
{
   .........;
   return theCat;
}
  而且,FunctionOne,FunctionTwo, FunctionThree, FunctionFour
都可以实现相同的结果.
  但是,我没有看见FunctionFour的这种用法,请问,这种用法正确吗?



  
snowStart
驱动老牛
驱动老牛
  • 注册日期2004-04-06
  • 最后登录2011-06-02
  • 粉丝0
  • 关注0
  • 积分95分
  • 威望19点
  • 贡献值177点
  • 好评度1点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2004-10-23 13:29
这几种语法应该都是对的

本人认为C++里,效率最高的应该是

void FunctionFour(SimpleCat &theCat)
{
.........;
}
学习,关注,交流中... [email=fengyu@163.com]Email:snowstarth@163.com[/email] [url]http://bbs.zndev.com/?a=snowStart[/url]
xx_focus
驱动中牛
驱动中牛
  • 注册日期2003-08-06
  • 最后登录2007-06-08
  • 粉丝0
  • 关注0
  • 积分96分
  • 威望10点
  • 贡献值0点
  • 好评度8点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2004-10-23 19:06
SimpleCat FunctionFour(SimpleCat &theCat)
{
.........;
return theCat;
}

这个函数返回后最好不要这样使用
youcat = FunctionFour( youcat );

因为当函数返回前 youcat 已经有结果了,除非把这个返回值给别的变量或对象
youcat2 = FunctionFour( youcat1 );

所以,如果只给一个对象操作尽量使用
void FunctionFour(SimpleCat &theCat)
{
…………
}
wkq清秋枫叶
驱动小牛
驱动小牛
  • 注册日期2004-06-17
  • 最后登录2008-08-07
  • 粉丝1
  • 关注0
  • 积分53分
  • 威望8点
  • 贡献值0点
  • 好评度4点
  • 原创分0分
  • 专家分0分
地板#
发布于:2004-10-28 09:15
我在昨天看书时也发现了下述使用方法.这说明是可以这样用的.
SimpleCat FunctionFour(SimpleCat &theCat)
{
.........;
return theCat;
}
游客

返回顶部