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;
}