A()是什么意思

What does A a() mean?

本文关键字:意思 是什么      更新时间:2023-10-16

考虑以下代码:

#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。(参见最令人烦恼的解析)。

你想要的是

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

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

Xa()

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

对于您的类,值initialization==默认初始化(至少对于结果)。请参阅我的答案:C++:通过值上Infos的隐式构造函数初始化int变量,而不是POD或内置类型的默认初始化。

它定义了一个名为a的函数,该函数返回类型为A的对象。这被称为"最麻烦的解析"。