【发布时间】:2017-11-20 18:37:45
【问题描述】:
所以这个程序正在打印5 0 1。不应该是5 1 1 吗? data1++ 确实将 f1.data1 增加了 1。 0 究竟来自哪里?我正在使用多个函数,因为我刚刚开始学习对象和类,并试图创造尽可能多的可能性。这真的让我很困惑。
#include <iostream>
using namespace std;
class foo
{
private:
int data1; //private data member
public:
foo(): data1(0) //Constructor initialising it to 0.
{ }
void func(foo,foo);
void display(foo fg) const
{
cout<<data1;
cout<<endl;
cout<<fg.data1;
}
};
void foo::func(foo ff,foo fg)
{
ff.data1=5;
data1++;
ff.display(fg);
cout<<endl<<data1<<endl;
}
int main()
{
foo f1,f2;
f1.func(f2,f1);
return 0;
}
【问题讨论】:
-
您可以在调试器中单步执行以了解发生了什么。
-
嗨,欢迎来到 SO,请使用 The Tour 和 How to ask a good question
-
一个提示是您正在按值传递参数 - 创建副本。你有多少本?更新原件后,副本会发生什么情况?
-
这不是问题,但您真的需要
std::endl需要的额外内容吗?'\n'结束一行。