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”。