CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  C/C++ >  C语言

C++初学者提问!

楼主zhoyan(独孤求胜)2001-11-22 16:54:32 在 C/C++ / C语言 提问

我从书上看到有如下代码:  
  class   cat  
  {  
    public:  
                cat(   );  
                cat(const   cat&);  
                int   getage(   )   const   {return   *itsage;}  
                int   getweight(   )   const   {return   *itsweight;}  
    private:  
                int*   itsage;  
                int*   itsweight;  
  };  
   
  cat::cat(   )  
  {  
        itsage=new   int;  
        itsweight=new   int;  
        *itsage=5;  
        *itsweight=9;  
  }  
   
  cat::cat(const   cat&   rhs)  
  {  
        itsage=new   int;  
        itsweight=new   int;  
        *itsage=rhs.getage(   );                                       //?  
        *itsweight=rhs.getweight(   );                     //?  
  }  
   
  int   main(   )  
  {  
              略  
  }  
   
  问题:1.在复制构造函数中的形参被定义为常量引用,既然是常量,那怎么能为指针重新分配内存呢?那不是改变了指针变量的值了吗?是书上错了还是我理解错了?  
  2.假设问题1书上是对的,既然对象rhs的两个指针已经分配了新的内存,那么函数rhs.getage(   )和rhs.getweight(   )怎么还能获得原来对象拷贝的值然后再赋给rhs的两个指针呢???  
          真是百思不得其解  
  问题点数:30、回复次数:3Top

1 楼leizhengdeng(权为妞妞所用,利为妞妞所谋)回复于 2001-11-22 17:01:53 得分 2

两个对象Top

2 楼leizhengdeng(权为妞妞所用,利为妞妞所谋)回复于 2001-11-22 17:05:09 得分 1

main()  
  {  
  cat   rhs;  
  cat   cat2(rhs);  
  //cat2.cat(const   &rhs)里面new的是cat2的成员变量,不是rhs的,rhs根本没变  
  //  
   
  }  
  Top

3 楼bdsc()回复于 2001-11-22 17:10:22 得分 27

*itsage=rhs.getage(   );  
  拷贝构造,意思是在建造新的一个对象(用一个已经存在的对象)  
  this(正在生成的对象)   不是   rhs(已经存在的对象)  
  应该这样理解:     this->(*itsage)   =   rhs.getage();      
   
  问题1清楚了,问题2就明白了。Top

相关问题

  • C++提问
  • 提问,关于C#
  • C++菜鸟提问.
  • 提问(关于C)
  • C++初学者提问。
  • C# 第一次提问 。
  • C# MFC菜鸟提问
  • asp.net+c# 菜鸟提问
  • 菜鸟的c#提问 - - - 599898
  • c++ 简单问题提问

关键词

  • 指针
  • itsage
  • itsweight
  • rhs
  • cat
  • getage
  • getweight
  • 对象
  • 书
  • 问题

得分解答快速导航

  • 帖主:zhoyan
  • leizhengdeng
  • leizhengdeng
  • bdsc

相关链接

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

广告也精彩

反馈

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