鱼C论坛

 找回密码
 立即注册
查看: 2642|回复: 1

[技术交流] 终于发现小甲鱼错误啦! 哈哈哈!!!

[复制链接]
发表于 2013-11-18 00:05:32 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 cyshhm 于 2013-11-18 00:07 编辑

//第36课 第二个例子!
#include<iostream>
#include<string>

class abc
{
public:
      abc(int* bb);
      abc(const abc& a);
      ~abc();

      abc &operator=(const abc &a);
      void dy();
private:
      int *bb;
};

abc::abc(int* bb)
{
      std::cout<<"进入 j基类j 构造器\n";
      this->bb=bb;
      std::cout<<"离开 j基类j 构造器\n";
}

abc::abc(const abc &c)
{
      std::cout<<"进入 f副本f 构造器\n";
      bb=new int;//在这之前没个给 bb指向的东西没意义 开辟内存让bb指向
      //小甲鱼你的程序是没这句的 (*^__^*) 嘻嘻…… 没上门这句 那么 等会给bb指向的内存赋值的时候 就会错误(*^__^*)
      *this=c;//重载了=号 进入 =号重载
      std::cout<<"离开 f副本f 构造器\n";
}

abc::~abc()
{
      std::cout<<"进入基类 xx析xx 构造器\n";
      delete bb;
      std::cout<<"离开基类 xx析xx 构造器\n";
}

abc& abc::operator =(const abc& a)
{
      std::cout<<"进入 =赋值= 语句重载\n";
      if(this!=&a)
      {
            *bb = *a.bb;
      }
      else
      {
            std::cout<<"赋值号两边为同一对象,不做处理\n";
      }

      std::cout<<"离开 =赋值= 语句重载\n";

      return *this;
}

void abc::dy()
{
      std::cout<<bb<<"  "<<*bb<<std::endl;
}

int main()
{
      abc a1(new int(1));
      abc a2(new int(2));
      a2=a1;

      a1.dy();
      a2.dy();

      std::cout<<"----------------------------------\n";

      abc a3(new int(3));
      abc a4=a3;

      a3.dy();
      a4.dy();

      std::cout<<"----------------------------------\n";

      abc a5(new int(5));
      a5=a5;
      a5.dy();

      return 0;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2013-11-18 21:54:40 | 显示全部楼层
没人顶啊!?????
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-25 08:19

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表