请帮我理解主要功能中的一行。这意味着什么
#include<iostream>
struct ABC
{
private:
int A,
float B;
public :
ABC() {};
~ABC(){};
};
int main()
{
ABC A={}; // What does this statement means?
return 0;
}
答案 0 :(得分:2)
ABC A={}
与调用没有参数的构造函数相同。在您的情况下,它是ABC A = ABC()
;
让我们考虑这个类(公共构造函数为0/1/2 params)
class Hello {
private:
int x;
float y;
public:
Hello() {}
Hello(int _x) : x(_x) {}
Hello(int _x, float _y) : x(_x), y(_y) {}
};
Hello h = {}
== Hello h = Hello()
==只是Hello h
Hello h = {1}
== Hello h = Hello(1)
== Hello h; h.x = 1;
Hello h = {1, 2}
== Hello h = Hello(1, 2)
== Hello h; h.x = 1; h.y = 2;
答案 1 :(得分:1)
ABC A={};
自c ++ 11以来,这被称为copy-list-initialization。在这种特殊情况下,它与调用ABC A;
或ABC A{}
或ABC A()
等相同。它所做的只是初始化一个调用构造函数的对象。
答案 2 :(得分:0)
在你的情况下ABC A={};
将调用默认构造函数,但是......如果你的类没有默认构造函数(由你提供)= {}
初始化会做“魔术” - 它会初始化所有具有“零/默认值”的结构/类成员,即:0表示数值类型,0.0表示浮点类型,nullptr表示指针...这比默认默认构造函数更多。
答案 3 :(得分:0)
在C ++中,无论{};
如何,它都没有区别但如果它像C风格的结构一样,那么ABC A={};
会将其成员A和B重置为零。
struct ABC
{
int A;
float B;
};