C++中调用对象成员函数时是值传递吗?为什么通过调用成员函数可以改变实参的值?
C++中调用对象成员函数时是值传递吗?为什么通过调用成员函数可以改变实参的值?
回复 2楼 xufan
请看下面的代码#include<iostream>
using namespace std;
class Time{
private:
int hour;
int minute;
int second;
public:
Time (int h,int m,int s)
{
hour=h;
minute=m;
second=s;
}
int a()
{
cin>>hour;
return hour;
}
};
int main()
{
Time t(1,1,1);
int x;
x=t.a();
cout<<x<<endl;
return 0;
}
运行程序时如果输入2,运行结果输出2(而不是1),也就是说实参的值被改变,但如果看下面一段代码
#include<iostream>
using namespace std;
void a(int hour)
{
hour=2;
}
int main()
{
int hour=1;
a(hour);
cout<<hour<<endl;
return 0;
}
运行结果输出1,也就是平常理解的单向传递,实参的值并没有改变。为什么会出现这种差异呢?