C++ cli C++/CLI接口类与接口结构

C++ cli C++/CLI接口类与接口结构,c++-cli,C++ Cli,以下声明(在C++/CLI中)之间有什么区别: 类似情况: public enum class EC {}; public enum struct ES {}; 它们是相同的 有关详细信息,请参见备注下的参考: 接口结构相当于接口类 我相信微软决定允许这两个选项只是为了与ref-class/ref-struct和value-class/value-struct保持一致。但是,由于接口没有私有成员,对于接口,这两个语句变得完全相同。没有区别。它们是等价的 记住,在“实际”C++中,除了成员的

以下声明(在C++/CLI中)之间有什么区别:

类似情况:

public enum class EC {};

public enum struct ES {};
它们是相同的

有关详细信息,请参见备注下的参考:

接口结构相当于接口类



我相信微软决定允许这两个选项只是为了与
ref-class
/
ref-struct
value-class
/
value-struct
保持一致。但是,由于接口没有私有成员,对于接口,这两个语句变得完全相同。

没有区别。它们是等价的


记住,在“实际”C++中,除了成员的默认可访问性之外,结构和类之间几乎没有区别。因此,在C++/CLI的并行世界中,可访问性规则无论如何是不同的,它们是等价的并不完全疯狂。

你说“(…)可访问性规则无论如何是不同的”是什么意思?它们有什么不同?首先,你有更多的选择,而不是C++,因为你有“公共保护”和“私有保护”之类的东西,它们不存在于“正常”C++中。现在我知道,我认为冗余的构造是因为C++的开发者和CI的目的是减少新的关键字的数量。这就是为什么他们提出了称为上下文敏感关键字的解决方案。他们不能引入“interface”关键字,因为它会与大量已编写的源代码(例如,“interface”类型名称)发生冲突。所以他们可能决定将它与class关键字连接起来,只是为了创建一个上下文,而与struct关键字连接起来,只是为了保持一致。
public enum class EC {};

public enum struct ES {};