c++ - 在定义一个充满成员的结构时,是否为该结构类型的每个变量创建了这些成员?

标签 c++ c struct

所以有一个代码:

struct ACDC
{
  double in, out, A, B, C;
};

struct VALUE
{
  struct ACDC I, V;
};

struct VALUE motor1, motor2, DC;

当我声明此结构的几个变量(如 motor1、motor2、DC1、DC2)时,我不需要为所有变量使用所有成员。我只需要这样的东西:

motor1.I.A; motor1.I.B; motor1.I.C;
motor2.I.A; motor2.I.B; motor2.V.A; motor2.V.B;
DC.I.in;
DC.I.out;

那么问题来了,其他的成员是不是在我创建的时候就声明了这个变量并占用了内存中的空间呢?如果是这样,如何才能让它们仅在首次调用时创建?

谢谢

最佳答案

结构描述了内存布局。当您实例化一个时,它会为整个事物分配内存,并且成员名称本质上是该分配中偏移量的助记符,这要求它们在编译时已知。

如果你想要可选元素,你将不得不使用指针,或者可能在 C++ 中对指针使用一些复杂的模板恶作剧。

因为您指定了两种截然不同的语言(C 与 C++),所以我无法给出具体的、惯用的示例。

但是,您给出的示例看起来像是糟糕/草率的设计,而不是真正需要可变可选成员资格。

您可能希望将您尝试解决的问题显示为一个新问题。

关于c++ - 在定义一个充满成员的结构时,是否为该结构类型的每个变量创建了这些成员?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40229517/

相关文章:

c - 在C中形成数组并打印列/行

c++ - 无限循环 - 顶部还是底部?

c - C语言用二进制文件保存和读取结构体数组

C - 将结构解构为 char 数组

C++类继承错误C2509

C++ 右值引用请求

c++ - 如何在 C++ 中将对象存储在另一个对象中?

c++ - EXPECT_CALL 在 Google 测试中没有模拟

c++ - 获取实际不存在的进程加载模块

arrays - 在结构体的数组字段中转义 HTML