请问下面那句话编译不通过? struct test { test(int ){} test(){} void fun(){} }; int main() { test t1(1);//第一句 t1.fun()://第二句 test t2();//第三句 t2.fun()://第四句 } 答案: 第四句错误。 因为第三句被当成了函数声明。 声明用默认构造函数初始化的对象时,不能用括号,否则会被编译器解释为函数的声明。