A()是什么意思
What does A a() mean?
考虑以下代码:
#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
的对象。这被称为"最麻烦的解析"。
相关文章:
- 这个语法std::class<>{}(arg1, arg2) 在C++中是什么意思?
- 标准 N3337 5.2.10 第 7 条中的C++"类型"是什么意思?
- "类模板示例<int>;"语句对 C++11 是什么意思?
- 线应该是什么意思
- "CID"在AT+HTTPPARA= "CID" ,1中是什么意思
- 表达式"b=(b-x)&x"是什么意思?
- 这个表达是什么意思?
- 此代码验证公式是什么意思?
- 跟踪日志中的T.11803()是什么意思?
- 这个额外的关键字在这个 c++ 类声明中是什么意思?
- * 和 ** 在 C++ 函数声明中是什么意思?
- _T("xyz")是什么意思?
- #define Dbg(fmt,..) (0) 是什么意思? 警告:表达式无效
- 这行代码到底是什么意思?
- 当我们说在执行程序时将操作系统的控制权传递给main()函数时,我们的意思是什么
- 这句话在c++中的意思是什么
- 这个typedef的意思是什么
- 这句话的意思是什么
- 意思是什么
- 这个句法的意思是什么?