A a()是什么意思?

考虑这个代码:

#include<iostream> using namespace std; class A { public: A():age(12){} int age; }; int main() { A a(); cout << a.age << endl; return 0; } 

当我使用g ++编译它时,出现错误:

你看不到成员年龄,因为a不是A()

谁可以给我解释一下这个? 什么是A a()

这条线

 A a(); 

声明一个名为a的函数,返回没有参数的A (请参阅最令人头疼的parsing )。

你想要的是

 A a = A(); // value-initialization A a{}; // the same but only valid in C++11 (and currently not supported by MSVS) 

要么

 A a; // default initialization 

C ++ 11,§8.5/ 10

注意:由于初始化器的语法不允许使用()

X a();

不是X类的值初始化对象的声明,而是函数的声明不带参数并返回X.

对于你的类,值初始化==默认初始化(至less对于结果)。 在这里看到我的答案: C ++:通过隐式的Infos 构造函数初始化intvariables对POD或内置types的值或默认初始化。

它定义了一个名为a的函数,返回一个types为A的对象。 这被称为“最令人头疼的parsing”。