c ++这个函数的输出是什么?

时间:2018-03-09 02:47:43

标签: c++ constructor destructor main

该程序的输出应为:

任何人都可以解释为什么这个主要的输出是:

F1 / 2 F2 / 3 F5 / 4 F0 / 1 F0 / 1 F0 / 1 F0 / 1 F0 / 1

K0 / 1 K0 / 1

1KΩ/□ K2 / 3 K1 / 2

你能解释我们如何得到最后两行吗? 感谢

构造函数在fraction.h中初始化为

Fraction(int n=0, int d=1);

 /* fraction.cpp */
#include "fraction.h"
#include <iostream>
using namespace std;
Fraction::Fraction(int n, int d)
: numerateur(n)
{
dedominateur = d;
cout << "F" << n << '/' << d << ' ';
simplifier();
}
Fraction::~Fraction(){
    //cout<<"destructeur";
cout << "K"
<< numerateur << '/'
<< dedominateur << ' ';
numerateur = dedominateur = 0;
}
void Fraction::simplifier(){/*...*/}

  /* prog1.cpp */
#include <iostream>
#include "fraction.h"
using namespace std;
void test(Fraction a, Fraction& b){
Fraction* c = new Fraction(a);
a = b;
b = *c;
c = NULL;
cout<< "F";
return;
}
int main(){
Fraction f1(1,2), f2(2,3), f3(5,4);
Fraction* tab = new Fraction[5];
std::cout << std::endl;
test(f1, tab[2]);
test(tab[3], tab[4]);
f3 = tab[5];
std::cout << std::endl;
return 0;
}

1 个答案:

答案 0 :(得分:0)

K的输出显然来自析构函数。其中两个来自参数a,它通过值(副本)传递给test。其他三个是main第一行的那些。

new创建的对象永远不会delete,因此永远不会被破坏。