C++程序的输出| 7套
预测以下 C++ 程序的输出。
问题 1
class Test1 {
int y;
};
class Test2 {
int x;
Test1 t1;
public:
operator Test1() { return t1; }
operator int() { return x; }
};
void fun ( int x) { };
void fun ( Test1 t ) { };
int main() {
Test2 t;
fun(t);
return 0;
}
输出:编译器错误
Test2 类中定义了两个转换运算符。因此 Test2 对象可以自动转换为 int 和 Test1。因此,函数调用 fun(t) 是模棱两可的,因为有两个函数 void fun(int) 和 void fun(Test1),编译器无法决定调用哪个函数。通常,转换运算符必须小心重载,因为它们可能会导致歧义。
问题2
#include
using namespace std;
class X {
private:
static const int a = 76;
public:
static int getA() { return a; }
};
int main() {
cout <
输出:程序编译并打印 76
一般在C++类声明中是不允许初始化数据成员的,但是静态const整型成员被区别对待,可以用声明来初始化。