CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  C/C++ >  C++ 语言

copy-ctor的开参为什么不能是按传值方式来定义呢?

楼主THEBEST(你厉害!)2004-05-02 19:33:02 在 C/C++ / C++ 语言 提问

#include   <iostream>  
  using   namespace   std;  
     
  struct   A   {  
          A()   {i=0;   }  
          A(const   A   rhs)       //我故意不用const   A   &rhs的。  
          {  
                  i   =   rhs.i;  
                  cout   <<   "Copy   -   Ctor"   <<   endl;  
          }  
          int   i;  
  };  
  int   main()  
  {  
          A   a;  
          A   b(a);  
  }  
  我为什么故意用const   A   :  
  因为pass-by-value时都调用copy-ctor。像传给函数参数,函数返回值等情况下都是这样。所以我想如何我定义一个copy-ctor也按pass-by-value的话,那不就成了一个递归调用了吗?因为copy-ctor本身的实参到形参的初始化就是调用这个copy-ctor的。  
   
  A(const   A   rhs)   {     };  
  相当于  
  A()  
  {     const   A   rhs(传过来的实参);       }     //我理解成递归了。  
   
  但当我把开参声明成by-value时,编译时一大堆错误。  
  像说i没定义之类的错误也有。为什么会这样呢?  
  难道copy-ctor就是不能声明形参为const   A的吗?只能传引用?或指针?  
  问题点数:20、回复次数:2Top

1 楼THEBEST(你厉害!)回复于 2004-05-02 19:40:49 得分 0

BTW:系统默认生成的copy-ctor就是pass-by-reference的吧。Top

2 楼freefalcon(心宇—消失中...)回复于 2004-05-02 19:46:27 得分 20

定义一个copy-ctor也按pass-by-value的话,那不就成了一个递归调用了吗?  
  正是如是原因  
  只能传引用?或指针?  
  是的,但通常用引用,指针的话,你还得判断它是否有效Top

相关问题

  • 自定义消息参数??
  • 用带参的自定义事件
  • CList 作参数怎么定义?
  • 怎样在datastore中定义参数呀!
  • 有些形参为何如此定义?
  • 数据窗口参数未定义???
  • web user control能不能定义参数?
  • 自定义函数的带参问题
  • 自定义组件参数问题?
  • 关于函数参数定义问题

关键词

  • rhs
  • const

得分解答快速导航

  • 帖主:THEBEST
  • freefalcon

相关链接

  • C/C++ Blog
  • C/C++类图书
  • C/C++类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo