鱼C论坛

 找回密码
 立即注册
查看: 4455|回复: 4

我用vc6.0运行三十六讲副本构造器的第二个例子为什么出错啊?

[复制链接]
发表于 2013-6-7 23:18:37 | 显示全部楼层 |阅读模式

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

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

x
QQ图片20130607231837.jpg
大家看看啊,为什么vc6.0和小甲鱼的运行的情况不同啊
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2013-6-8 00:04:46 | 显示全部楼层
你得把源代码贴出来啊  你自己敲的源代码  光看这个界面没法查错的
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-6-8 10:11:21 | 显示全部楼层

我用的就是小甲鱼的源代码,怎么不行啊,你试试啊
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2013-6-8 10:54:57 | 显示全部楼层
学才 发表于 2013-6-8 10:11
我用的就是小甲鱼的源代码,怎么不行啊,你试试啊

我没有源代码 ……  所以让你贴出来的
如果你的代码确实没有问题
那么就有两种可能  你的VC6.0有问题  或者你在建工程的时候漏选了什么选项 或着多选了什么
你再检查检查
别急~
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-6-8 20:19:19 | 显示全部楼层

  1. #include <iostream>
  2. #include <string>
  3. class MyClass
  4. {
  5. public:
  6.     MyClass(int *p);
  7.     MyClass(const MyClass &rhs);
  8.     ~MyClass();
  9.     MyClass &operator=(const MyClass &rhs);
  10.     void print();
  11. private:
  12.     int *ptr;
  13. };
  14. MyClass::MyClass(int *p)
  15. {
  16.     std::cout << "进入主构造器\n";
  17.     ptr = p;
  18.     std::cout << "离开主构造器\n";
  19. }
  20. MyClass::MyClass(const MyClass &rhs)
  21. {
  22.     std::cout << "进入副本构造器\n";
  23.     *this = rhs;
  24.     std::cout << "离开副本构造器\n";
  25. }
  26. MyClass::~MyClass()
  27. {
  28.     std::cout << "进入析构器\n";
  29.     delete ptr;
  30.     std::cout << "离开析构器\n";
  31. }
  32. MyClass &MyClass::operator=(const MyClass &rhs)
  33. {
  34.     std::cout << "进入赋值语句重载\n";
  35.     if( this != &rhs )
  36.     {
  37.         delete ptr;
  38.         ptr = new int;
  39.         *ptr = *rhs.ptr;
  40.     }
  41.     else
  42.     {
  43.         std::cout << "赋值号两边为同个对象,不做处理!\n"; // obj1 = obj1;
  44.     }
  45.     std::cout << "离开赋值语句重载\n";
  46.     return *this;
  47. }
  48. void MyClass::print()
  49. {
  50.     std::cout << *ptr << std::endl;
  51. }
  52. int main()
  53. {
  54.     MyClass obj1(new int(1));
  55.     MyClass obj2(new int(2));
  56.     obj2 = obj1;
  57.     obj1.print();
  58.     obj2.print();
  59.     std::cout << "-------------------------------\n";
  60.     MyClass obj3(new int(3));
  61.     MyClass obj4 = obj3;
  62.     obj3.print();
  63.     obj4.print();
  64.     std::cout << "-------------------------------\n";
  65.     MyClass obj5(new int(5));
  66.     obj5 = obj5;
  67.     obj5.print();
  68.     return 0;
  69. }

复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-7-25 21:20

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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