#include<iostream>
using namespace std;
class INCREMENT
{
public:
INCREMENT( int v = 0, int i = 1 );
void addIncrement()
{
v += increment;
}
void print() const;
int get() const
{
return v;
}
private:
int v;
const int increment;
};
INCREMENT::INCREMENT( int v, int i ) : v( v ), increment( i )
{
}
void INCREMENT::print() const
{
cout << v << endl;
}
int main()
{
INCREMENT value( 1, 2);
value.print();
for ( int j = 1; j <= 2; j++ )
{
value.addIncrement();
value.print();
}
return 0;
}
为什么结果第一行先输出1啊?
在程序中,类 INCREMENT 的构造函数中,有两个参数 v 和 i,分别用于初始化对象成员变量 v 和 increment。
在主函数中,通过调用 INCREMENT 类的构造函数初始化了对象 value,其中 v 被初始化为 1,increment 被初始化为 2。
然后,调用 value.print(),输出的是对象 value 中成员变量 v 的值,即 1。
接下来进入循环,调用 value.addIncrement() 方法,对成员变量 v 加上 increment 值 2,此时 v 的值变为 3,再通过 value.print() 输出,得到结果为 3。
循环继续执行,再次调用 value.addIncrement() 方法,对成员变量 v 加上 increment 值 2,此时 v 的值变为 5,再通过 value.print() 输出,得到结果为 5。
因此程序的输出结果为:
1
3
5
所以,第一行输出的值为对象的初始值,即构造函数中传递给 v 参数的值。