关于C++的构造函数

新手上路,请多包涵

假定用户为类AB定义了一个构造函数“AB():a(0),b(0){}”,类AB中的成员为int a和int b。则创建该类对象的语句“AB x();”为什么是错误的?

阅读 2.1k
1 个回答

对于无参构造的类,定义时需要用 AB x; 的方式来声明,这是C++的规定。
而 AB x() 的用法在编译的时候 vc 会报一个警告

warning C4930: “AB x(void)”: 未调用原型函数(是否是有意用变量定义的?)

这是因为编译器无法理解你写的是类实例化还是一个函数声明,假设你后面还有一个函数是

AB x()
{
    ...
}

这就可能是一个提前的函数声明,所以这里编译器警告了你,并把这个写法当作了一个提前定义的函数声明,而没定义 c 实例。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题