📜  C++程序的输出| 6套

📅  最后修改于: 2022-05-13 01:56:11.142000             🧑  作者: Mango

C++程序的输出| 6套

预测以下 C++ 程序的输出。

问题 1

#include
  
using namespace std;
  
class Test {
    int value;
public:
    Test (int v = 0) {value = v;}
    int getValue() { return value; }
};
  
int main() {
    const Test t;  
    cout << t.getValue();
    return 0;
}

输出:编译器错误。

const 对象不能调用非常量函数。上面的代码可以通过使 getValue() 成为 const 或使 t 成为非常量来修复。以下是使用 getValue() 作为常量的修改程序,它工作正常并打印 0。

#include
  
using namespace std;
  
class Test {
    int value;
public:
    Test (int v = 0) { value = v; }
    int getValue() const { return value; }
};
  
int main() {
    const Test t;  
    cout << t.getValue();
    return 0;
}


问题2

#include
  
using namespace std;
  
class Test {
    int &t;
public:
    Test (int &x) { t = x; }
    int getT() { return t; }
};
  
int main()
{
    int x = 20;
    Test t1(x);
    cout << t1.getT() << " ";
    x = 30;
    cout << t1.getT() << endl;
    return 0;
}

输出:编译器错误
由于 t 是 Test 中的引用,因此必须使用 Initializer List 对其进行初始化。以下是修改后的程序。它可以工作并打印“20 30”。

#include
  
using namespace std;
  
class Test {
    int &t;
public:
    Test (int &x):t(x) {  }
    int getT() { return t; }
};
  
int main() {
    int x = 20;
    Test t1(x);
    cout << t1.getT() << " ";
    x = 30;
    cout << t1.getT() << endl;
    return 0;
}