QQ登录

只需一步,快速开始

扫一扫,访问微社区

登录 | 注冊 | 找回密码

163 加中网–加拿大曼尼托巴中文门户网站 | 温尼伯华人论坛

 找回密码
 注冊

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 365|回复: 6
打印 上一主题 下一主题

[闲聊] [求助]C++问题--达人请进

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2004-8-28 17:43:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
#include<iostream.h>
class  B {
private:
int * p;
public:
B (int i) { p=new int;
            
            *p=i ;   }
~ B ()  {  delete p;  }
};
void f (B  b)  {}
void main(void)  {
    B b(1);
f(b) ;       //lable
cout<<"OK!";
}
lable处运行出错,导致cout输不出。
经调试发现调用f(a)函数后,b中指针p所指值发生变化。
f(a)属传值调用,产生实参的临时拷贝,函数调用完后就释放该拷贝,不知怎么会破坏b?
请教高手其中原因(我用的是Visual C++6.0),怎样避免这类错误。谢谢!
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
收藏收藏 分享分享
回复

使用道具 举报

该用户从未签到

2#
发表于 2004-9-22 05:05:04 | 只看该作者

[求助]C++问题--达人请进

class B 没有拷贝构造函数(Copy-Constructor)。

该用户从未签到

3#
发表于 2024-4-22 15:39:37 | 只看该作者
回复 支持 反对

使用道具 举报

该用户从未签到

4#
发表于 2024-4-22 15:40:48 | 只看该作者
回复 支持 反对

使用道具 举报

发表回复
您需要登录后才可以回帖 登录 | 注冊

本版积分规则

    联系我们
  • 咨询电话:1.204.294.8528
  • 邮箱:163adv@gmail.com
  • QQ:179091654
    移动客户端:即将开放
    关注我们:
  • 扫描二维码加关注

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