解释这个程序的输出
Explain the output of this program
我不知道这是如何工作的,代码真的很复杂,因为它是为我在编程类。当我手动完成它时,我似乎无法得到程序的输出,这是我们下周期末的练习测试,我不会在测试中作弊,教授给了我们程序和输出,我只是不明白为什么这是输出..:
class FinalExam
{
private:
int This;
int That;
public:
FinalExam(int, int);
void One(int);
int Two(int);
};
FinalExam :: FinalExam(int A = 3, int B = 5)
{
This = A;
That = B;
}
void FinalExam :: One(int A)
{
This --;
That = A;
}
int FinalExam :: Two(int A) // Two gets the int 8
{
int Scrap;
Scrap = This + That - A; // 5 + 2 - 8 = -1????
return Scrap;
}
main()
{
FinalExam Block;
FinalExam Chunk(6, 7);
Block.One(2);
cout << Block.Two(3)
<< 'n'
<< Chunk.Two(8); //I get lost on this 8, It should go to "Two"
}
输出为:
1
5
我已经看了大约一个小时了,我还是不明白。
FinalExam Block; // Not passing any arguments to the constructor. In that case,
// default argument values are taken. So, This = 3, That = 5
Block.One (2); // This = 2; That = 2
// Because This is decremented and That is assigned the value
// passed to the method which is 2.
cout << Block.Two (3) ; // 2 + 2 - 3 = 1 which is returned and is printed.
同样尝试第二个
说明行与行之间的注释。
int main(int, char**) {
FinalExam Block;
// At this point ..
// Block.This = 3;
// Block.That = 5
FinalExam Chunk(6, 7);
// Chunk.This = 6
// Chunk.That = 7
Block.One(2);
// Block.One decrement's This and assigns 2 to That so ..
// Block.This = 2
// Block.That = 2
std::cout << Block.Two(3)
// Block.Two(3) returns the result of this calculation
// This + That - 3
// This and That are both 2 at this point so..
// 2 + 2 - 3 == 1
// It returns 1 and prints out '1'
<< std::endl
<< Chunk.Two(8);
// Chunk's This and That are 6 and 7 respectively so ..
// cout << 6 + 7 - 8 == 5
}
逐行崩溃:
1 FinalExam Block;
使用默认值的构造函数,因此Block.This
= 3,并且Block.That
= 5。
2 FinalExam Chunk(6, 7);
使用构造函数,指定值,因此Chunk.This
= 6和Chunk.That
= 7。
3
Block.One(2);
递减
Block.This
(3 ==> 2),赋值Block.That
= 2(原为5)。
4 Block.Two(3)
返回Block.This
+ Block.That
-3 ==> 2+2-3 ==> 1,即输出
5 Chunk.Two(8)
返回Chunk.This
+ Chunk.That
-8 ==> 6+7-8 ==> 5,即输出
Q.E.D.输出为"1 n 5"
首先,您将注意到我们创建了两个FinalExam类型的对象Block和Chunk。
块:由于block没有通过参数传递任何值,它将采用来自以下代码块的默认值:
FinalExam :: FinalExam(int A = 3, int B = 5)
{
This = A;
That = B;
}
so This = 3 and That = 5
影响Block的下一行是:
Block.One(2);
指的是这个代码块:
void FinalExam :: One(int A)
{
This --;
That = A;
}
so This = 2 (This = This - 1 or This = 3 - 1)and That = 2(That = A = 2(by value in parameters)
影响Block的最后一行是:
cout << Block.Two(3)
指的是这个代码块:
int FinalExam :: Two(int A) // Two gets the int 8
{
int Scrap;
Scrap = This + That - A; // 5 + 2 - 8 = -1????
return Scrap;
}
所以我们创建一个新的整数叫做Scrap = 1 (This + That - a或2 + 2 - 3(passed by value))
块:引用Chunk的第一行是:
FinalExam Chunk(6, 7);
这个集合A = 6和B = 7因为这个代码块:
FinalExam :: FinalExam(int A = 3, int B = 5)
{
This = A;
That = B;
}
(This = A = 6 and That = B = 7)
最后,我们有这一行:
Chunk.Two(8);
指的是这个代码块:
int FinalExam :: Two(int A) // Two gets the int 8
{
int Scrap;
Scrap = This + That - A; // 5 + 2 - 8 = -1????
return Scrap;
}
A被设置为8,因为我们通过形参传递了它的值and Scrap = 5 (b + 7 - 8 or This + That - A)
输出:我们从Block输出废料,它是1然后创建一条新线并从Chunk输出Scrap,该Chunk为5
希望这对你有所帮助,如果你有任何其他问题,请留下评论
- 如何将c++程序的一些输出传递给shell,以便在shell中使用
- 使用C++程序合并排序没有得到正确的输出
- 显示错误输出的简单数组排序程序
- 更改.cpp程序的输入文件中数据的位置会意外更改输出
- 如何从Windows应用程序输出到标准?
- 我写了一个C++程序来模拟Enigma机器.我没有得到输出
- 如何使用C++读取另一个程序中的源代码输出
- 为什么我的C++程序的程序集输出充满了 .ascii,没有汇编代码?
- 为什么这个程序的输出不如预期
- 在由Sublime文本3编译后在cmd上显示Java程序输出
- C++ 每次运行程序时我都会"nan"输出的问题
- 如何从 Win32 C++ 应用程序输出到父控制台窗口?
- 这是使用回溯的 nqueen 问题,但我使用了动态 2d 数组,我的程序编译良好,但不返回任何输出
- 而循环:简单的除法程序输出零,不明白为什么
- 如何在 html 页面中插入 cgi 应用程序的输出?
- C 中的输出程序无明显的原因是白色的
- C++:更改简单输出程序的字体
- C++ 简单的输入/输出程序 + 枚举器
- C++字母等效数字代码输出程序
- 编译输出程序集