找回密码
 注册
搜索
热搜: 回贴
  • 前程无忧官网首页 有什么好的平台可以
  • 最新的销售平台 互联网营销的平台有哪
  • 制作网页的基本流程 网页制作和网页设
  • 【帝国CMS】输出带序号的列表(数字排
  • 网站建设公司 三一,中联,极东泵车的
  • 织梦 建站 织梦网站模版后台怎么更改
  • 云服务官网 哪些网站有免费的简历模板
  • 如何建网站要什么条件 建网站要用什么
  • 吉林市移动公司电话 吉林省退休人员网
  • 设计类毕业论文 网站设计与实现毕业论
查看: 440|回复: 3

好难一个问题呀!!

[复制链接]
发表于 2009-11-5 00:21:39 | 显示全部楼层 |阅读模式 IP:江苏扬州
请各位大侠帮忙看一下,为什么执行出来不是:
调用negative()取负成员函数前:5
调用negative()取负成员函数后:-5
#include<iostream>
using namespace std;
class person
{friend void operator -(person);
private:
int iapple;
public:
person(int iapple);//声明无参数构造符原型
void operator -();//声明成员变量取负数函数
void display();//声明显示成员变量函数
};
void operator -(person);
int main()
{person xiaowang(5);
cout<<"\n调用negative()取负成员函数前"<<endl;
xiaowang.display();
operator -(xiaowang);
cout<<"\n调用negative()取负成员函数后"<<endl;
xiaowang.display();
system("pause");
return 0;
}
person::person(int iapple)
{this->iapple=iapple;
}
void operator -(person p1)
{p1.iapple=-p1.iapple;
}
void person::display()
{cout<<"iapple="<<iapple<<endl;
}
发表于 2009-11-5 00:21:41 | 显示全部楼层 IP:江苏扬州
只能这么说一句,这是个很混乱的字母组合,不是代码,因为太乱我感觉我不是在改基本是重新做了一遍...因为今天我思维比较混乱所以只是稍微做了下..因为比较懒成员变量用的是pulice,如果要用private还要你自己在改下
#include<iostream>
using namespace std;
class person
{
public:
int iapple;
public:
person(int a);//声明无参数构造符原型
void nev(int b);//声明成员变量取负数函数
void display();//声明显示成员变量函数

};
person::person(int a)
{
iapple=a;
}
void person::nev(int b)
{
iapple=-b;
}
void person::display()
{
cout<<"iapple="<<iapple<<endl;
}

int main()
{
person xiaowang(5);
cout<<"\n调用negative()取负成员函数前"<<endl;
xiaowang.display();
xiaowang.nev(xiaowang.iapple);
cout<<"\n调用negative()取负成员函数后"<<endl;
xiaowang.display();
system("pause");
return 0;
}
回复

使用道具 举报

发表于 2009-11-5 00:21:43 | 显示全部楼层 IP:江苏扬州
friend void operator -(person&);

传一个引用吧,要不然函数返回后,person的值还是没变
回复

使用道具 举报

发表于 2009-11-5 00:21:45 | 显示全部楼层 IP:江苏扬州
声明的friend void operator -(person)并不是成员函数,只是一个友元函数
友元函数与成员函数不同,成员函数调用成员变量是传址调用,而友元函数(除了能访问类的私有变量与普通函数没不同)只是传值调用。也就是说传给operator -(person)的只是person的一个副本
当然也就不能改变person的值了
回复

使用道具 举报

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

本版积分规则

QQ|小黑屋|最新主题|手机版|微赢网络技术论坛 ( 苏ICP备08020429号 )

GMT+8, 2024-10-1 07:39 , Processed in 0.184572 second(s), 12 queries , Gzip On, MemCache On.

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

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