标题:好难一个问题呀!!
只看楼主
lpf10101
Rank: 1
等 级:新手上路
威 望:1
帖 子:27
专家分:0
注 册:2006-10-18
 问题点数:0 回复次数:3 
好难一个问题呀!!
请各位大侠帮忙看一下,为什么执行出来不是:
调用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;
}
搜索更多相关主题的帖子: private display include person public 
2007-03-15 23:07
虫虫飞ya飞
Rank: 1
等 级:新手上路
帖 子:122
专家分:0
注 册:2005-11-28
得分:0 

只能这么说一句,这是个很混乱的字母组合,不是代码,因为太乱我感觉我不是在改基本是重新做了一遍...因为今天我思维比较混乱所以只是稍微做了下..因为比较懒成员变量用的是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;
}

[此贴子已经被作者于2007-3-17 11:41:06编辑过]


2007-03-17 10:57
wfpb
Rank: 6Rank: 6
等 级:贵宾
威 望:29
帖 子:2188
专家分:0
注 册:2006-4-2
得分:0 

friend void operator -(person&);

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


[glow=255,red,2]wfpb的部落格[/glow] 学习成为生活的重要组成部分!
2007-03-17 12:17
Arcticanimal
Rank: 3Rank: 3
等 级:论坛游民
威 望:7
帖 子:341
专家分:20
注 册:2007-3-17
得分:0 
声明的friend void operator -(person)并不是成员函数,只是一个友元函数
友元函数与成员函数不同,成员函数调用成员变量是传址调用,而友元函数(除了能访问类的私有变量与普通函数没不同)只是传值调用。也就是说传给operator -(person)的只是person的一个副本
当然也就不能改变person的值了

[此贴子已经被作者于2007-3-17 20:28:40编辑过]


try new catch
2007-03-17 20:27



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-124525-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.735243 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved