【发布时间】:2012-03-06 03:38:27
【问题描述】:
这是我的短代码
class A {
public:
int x,y;
A(int a=0, int b=0) {
x=a;y=b;
}
};
int main() {
A t[2] = {9,3};
cout << t[0].x << " " << t[0].y << endl;
cout << t[1].x << " " << t[1].y << endl;
}
输出是:
9 0
3 0
当我评论我的构造函数时:
9 3
0 0
我的问题是:为什么会这样?我试图重载我能想到的所有东西,这意味着:复制构造函数,带有一个,两个参数的构造函数,(coma,equality,[]) 运算符,但我不知道编译器生成什么可以接受 2 个整数一个构造函数并将它们分配给 x,y。我什至尝试将括号中的数字溢出{},通过输入 {99999999999999999999,3} 来查看编译器会喊什么,但它说由于溢出它无法转换 const int,所以我相信它必须是转换,但是如何?
【问题讨论】:
-
你使用什么编译器?是否启用了 C++11 支持?
-
这有关系吗?如果是,请考虑这两种情况。
标签: c++ list class constructor user-defined