【问题标题】:C++/CLI interface class vs. interface structC++/CLI 接口类与接口结构
【发布时间】:2010-08-01 10:10:45
【问题描述】:

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

public interface class IC {};

public interface struct IS {};

类似情况:

public enum class EC {};

public enum struct ES {};

?

【问题讨论】:

    标签: c++-cli


    【解决方案1】:

    它们是相同的。

    有关详细信息,请参阅备注下的MSDN's interface class 参考:

    interface struct 等价于接口类。


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

    【讨论】:

    • 现在我知道了,我认为引入冗余结构是因为 c++/cli 的创建者旨在减少新关键字的数量。这就是为什么他们提出了称为上下文相关关键字的解决方案。他们不能引入“interface”关键字,因为它会与许多已经编写的源代码(例如“interface”类型名称)发生冲突。所以他们可能决定将它与 class 关键字连接在一起只是为了创建一个上下文,而与 struct 关键字只是为了保持一致。
    【解决方案2】:

    没有区别。它们是等价的。

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

    【讨论】:

    • 你是什么意思说“(...)哪里可访问性规则是不同的”?它们有何不同?
    • 嗯,首先,你有比 C++ 更多的选择,因为你有像“公共保护”和“私人保护”这样的东西,它们在“普通”C++ 中是不存在的。
    猜你喜欢
    • 2016-03-02
    • 2011-01-21
    • 2018-09-22
    • 1970-01-01
    • 2013-09-17
    • 1970-01-01
    • 2014-01-21
    • 2016-06-12
    • 2016-10-15
    相关资源
    最近更新 更多