0

我有两个问题。

  1. 我知道可以在结构中声明类对象。但从设计的角度来看这样做是否合乎道德?

  2. 在我的场景中,我有一个包含大量成员元素的结构,我也想包含一个类对象。这里我还有一个问题。如果我 memset() 整个结构类句柄也被重置。因此,我在调用 memset() 时检查了没有类对象的结构的其余部分的大小并减去它,以摆脱这个问题。(请注意,我在这里使用 STL 类 'queue'。我不能在对象上使用 sizeof() 运算符,因为它没有重载。)

但这完全是一种不可接受的方式吗?你能提出一些解决这个问题的方法吗?

4

3 回答 3

9
  • struct= class(默认可见性除外)。

  • 如果您有“大量成员”,您可能做错了什么,请更改您的设计,否则将变得难以处理。

  • 在有意义的地方嵌套类和/或结构绝对没问题。例如,为实现细节定义嵌套类是很常见的(所以一个linked_list类可以有一个node成员类)。

  • 没有“类对象”这样的东西,不清楚你的意思是什么。

  • 不要使用memset——你可能不需要它,只需使用普通的构造函数和赋值。

  • 而且我不能在对象上使用 sizeof() 运算符

    错了,可以用。

于 2012-06-26T10:12:12.010 回答
1

解决方案是避免使用类和结构的 memset,并使用构造函数。在 C++11 中,您也可以在各种条件下使用初始化列表。

于 2012-06-26T10:13:14.943 回答
0

c++ 中的类和结构之间没有太大的功能差异。C++ 中存在结构只是为了与 C 向后兼容。所以在结构中有一个类对象是可以的。但是,我通常更喜欢只有带有 getter 和 setter 的成员变量的结构。我不使用结构内的任何函数来操纵数据。如果我需要,那么我将使用类。

于 2012-06-26T10:11:14.597 回答