C中的空结构与C ++中的空结构

时间:2011-03-19 09:20:09

标签: c++ c struct rationale

为什么C中的空结构违反约束?为什么在C ++中更改此规则?

有历史原因吗?

2 个答案:

答案 0 :(得分:8)

因为你没有C中的继承,所以你不需要它们。如果您只想拥有可区分的指针类型,则可以使用指向不完整类型的指针。

struct opaque;

struct opaque* stranger = 0;

应该可以正常工作。

答案 1 :(得分:3)

我猜是这样的:

在C中,没有继承,模板和函数重载 - 我们在C ++中使用空结构的三个主要原因 - 作为基本接口,作为模板参数,作为帮助重载解析的类型。

你能想到在C中真正使用空结构吗?