如何在不提供构造函数的情况下创建和初始化一个简单结构
How do I create and initialise a simple struct without providing a constructor?
假设我有这样的类型:
struct T
{
SomeType a;
OtherType b;
};
我认为有某种方法可以声明T
类型的对象并定义a
和b
的初始化值,但我不记得这是如何工作的,甚至不记得它叫什么,所以我可以查找它。例如T t(a, b)
,其中a
和b
分别是SomeType
和OtherType
类型。
如何在不声明构造函数的情况下实现这一点,它被称为什么?
可以写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;
}
相关文章:
- 在C和C++中初始化结构中的数组
- 我们可以用参数化构造函数初始化结构的数组吗?
- 尝试初始化结构内的联合时出错
- 使用其他成员初始化结构的成员?
- 使用构造函数初始化结构还是在之后设置其值更好?
- 如果不初始化结构中的向量,它会自动为空还是具有随机内存位置的值?
- 如何在另一个结构中初始化结构数组?
- 如何在构造函数中初始化结构体的动态数组?
- 初始化结构中的联合 - c++
- 尝试初始化结构向量时出现编译错误
- 用于初始化结构的 void 指针强制转换
- 初始化结构的两种方式
- 使用用户定义的构造函数初始化C++结构
- 使用初始值设定项列表初始化结构,对于 std::array 失败
- 在 c++ 中初始化结构的指针
- 无序列图会创建一个零初始化结构吗?
- 如何在C++中初始化结构
- C 用结构指针初始化结构
- 在C 中初始化结构数组
- 使用数组聚合初始化结构数组