我有一个由几个字段组成的类,我有几个构造函数。我也有一个不带任何参数的构造函数,但是当我尝试使用它时:
int main {
A a;
}
编译器会生成错误,而如果我像这样使用它:
int main {
A a();
}
没关系。那是什么?
谢谢
答案 0 :(得分:11)
第一个main
使用A的默认构造函数。第二个声明一个不带参数的函数,并返回一个A值,这可能不是你想要的。
那么A的定义是什么样的,编译器生成的错误是什么?
哦,你需要在main int main() { //...
的声明中提供一个参数列表,而不是int main { //...
答案 1 :(得分:2)
你好意味着它编译或它的工作原理?代码行:
A a();
是名为a
的函数的声明(或原型),它不接受任何参数并返回类型为A
的对象。
我认为任何人都有机会帮助您解决真正的问题,至少需要发布class A
的声明。
答案 2 :(得分:1)
A
的实例化。
至于您的第一个代码段不起作用的可能原因,在以下情况下您会收到编译错误:
A
继承自没有默认构造函数的基类; OR A
包含没有默认构造函数的类型的对象; OR A
包含参考成员; 和
您提供了一个默认构造函数,它从其初始化列表中省略了一个或多个这些子对象。
所有这些子对象都需要某种方式进行初始化,编译器生成的默认构造函数不会这样做。请注意,在所有情况下,您都需要在初始化列表中初始化它们,而不是构造函数的 body 。
答案 3 :(得分:0)
你是对的,我在里面有一个问题。。