我们来看一个代码
class A {
public:A(int x) {cout << "123" << endl;}A(int x, int y) {cout << "456" << endl;}}a = (1, 2);
int main() {}
这个代码的输出结果是什么?
答案是 123
因为编译器把 ( 1 , 2 ) 识别为 了逗号运算符,就是 2 ,然后调用了单参构造函数
如果代码改为
class A {
public:A(int x) {cout << "123" << endl;}A(int x, int y) {cout << "456" << endl;}}a (1, 2);
int main() {}
那么结果才是 456