桃汁甜饼 2021-03-24 20:54 采纳率: 46.2%
浏览 229

PTA上的一道题write the output of the code below.

#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啊?

  • 写回答

1条回答 默认 最新

  • 移动安全星球 移动安全领域新星创作者 2023-06-01 11:08
    关注

    在程序中,类 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 参数的值。

    评论

报告相同问题?

悬赏问题

  • ¥15 matlab有关常微分方程的问题求解决
  • ¥15 perl MISA分析p3_in脚本出错
  • ¥15 k8s部署jupyterlab,jupyterlab保存不了文件
  • ¥15 ubuntu虚拟机打包apk错误
  • ¥199 rust编程架构设计的方案 有偿
  • ¥15 回答4f系统的像差计算
  • ¥15 java如何提取出pdf里的文字?
  • ¥100 求三轴之间相互配合画圆以及直线的算法
  • ¥100 c语言,请帮蒟蒻写一个题的范例作参考
  • ¥15 名为“Product”的列已属于此 DataTable