新微赢技术网
标题:
好难一个问题呀!!
[打印本页]
作者:
→大虾米々
时间:
2009-11-5 00:21
标题:
好难一个问题呀!!
请各位大侠帮忙看一下,为什么执行出来不是:
调用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
只能这么说一句,这是个很混乱的字母组合,不是代码,因为太乱我感觉我不是在改基本是重新做了一遍...因为今天我思维比较混乱所以只是稍微做了下..因为比较懒成员变量用的是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
friend void operator -(person&);
传一个引用吧,要不然函数返回后,person的值还是没变
作者:
一切还好
时间:
2009-11-5 00:21
声明的friend void operator -(person)并不是成员函数,只是一个友元函数
友元函数与成员函数不同,成员函数调用成员变量是传址调用,而友元函数(除了能访问类的私有变量与普通函数没不同)只是传值调用。也就是说传给operator -(person)的只是person的一个副本
当然也就不能改变person的值了
欢迎光临 新微赢技术网 (http://bbs.weiying.cn/)
Powered by Discuz! X3.2