如何在不提供构造函数的情况下创建和初始化一个简单结构

How do I create and initialise a simple struct without providing a constructor?

本文关键字:初始化 结构 简单 一个 创建 情况下 构造函数      更新时间:2023-10-16

假设我有这样的类型:

struct T
{
  SomeType a;
  OtherType b;
};

我认为有某种方法可以声明T类型的对象并定义ab的初始化值,但我不记得这是如何工作的,甚至不记得它叫什么,所以我可以查找它。例如T t(a, b),其中ab分别是SomeTypeOtherType类型。

如何在不声明构造函数的情况下实现这一点,它被称为什么?

可以写T t = {a, b}。这只适用于PODs聚合(当然也可以使用适当的构造函数)。

您使用c++11标记,所以非常简单地这样做:

#include <iostream>
struct T
{   
    int a;
    float b;
};  

int main()
{   
    T t{1,2.2};
    std::cout << t.a << ":" << t.b << std::endl;
}   

c++ 11支持使用"{}"统一初始化列表,这意味着您可以初始化。以"{}"作为结构的类你可以像这样初始化这个结构体

T t{someTypeA, otherTypeB};// someTypeA and someTypeB must be defined
下面是一个简单的测试代码
#include <iostream>
using namespace std;
class B
{
public:
    int a;
};
class C
{
public:
    int a;
};
struct A
{
    B b;
    C c;
};
int main(int argc, char** argv) 
{ 
    B b;
    C c;
    b.a = 1;
    c.a = 2;
    A a{b, c};
    cout << a.b.a << a.c.a << endl;
    return 0; 
}