相关疑难解决方法(0)

对象的大小是否受访问说明符类型和继承类型的影响?

在回答其中一个问题时,我的回答下面有一个讨论主题.这表明,根据访问符(或者可能是继承的类型)private/protected/publicsizeofclass对象可能会有所不同!

从他们的简短讨论中我仍然不明白,这怎么可能?

c++ inheritance access-specifier

10
推荐指数
1
解决办法
342
查看次数

联合如何根据对象列表确定最大大小?

我不确定问题是否妥善,因为我理解了如何,但我不知道用不明白的东西写问题.这里是:

我有一些课程:

class Animal{};
class Rabbit{}: public Animal;
class Horse{}: public Animal;
class Mouse{}: public Animal;
class Pony{}: public Horse;
Run Code Online (Sandbox Code Playgroud)

我的目标是从此对象列表中找到最大大小,以便在之后的内存分配中使用它.我已将每个sizeof对象存储在一个数组中,然后获取数组的最大值.上级(我发送代码进行审核)建议我使用union来在编译前的时间找到最大的大小.这个想法对我来说似乎很好,所以我这样做了:

typedef union
{
  Rabbit rabbitObject;
  Horse horseObject;
  Mouse mouseObject;
  Pony ponyObject;
} Size;
Run Code Online (Sandbox Code Playgroud)

...因为union根据最大元素分配内存.下一个建议就是这样做:

typedef union
{
   unsigned char RabbitObject[sizeof(Rabbit)];
   unsigned char HorseObject[sizeof(Horse)];
   unsigned char MouseObject[sizeof(Mouse)];
   unsigned char PonyObject[sizeof(Pony)];
} Interesting;
Run Code Online (Sandbox Code Playgroud)

我的问题是:

Interestingunion 如何获得对象的最大大小?对我来说,创建一个unsigned char类型的数组是没有意义的sizeof(class).为什么第二个选项可以解决问题,而之前的联盟却没有?背后发生了什么,我想念?

PS:条件是这样的,我不能亲自问这个家伙.

先感谢您

c++

1
推荐指数
1
解决办法
127
查看次数

标签 统计

c++ ×2

access-specifier ×1

inheritance ×1