【发布时间】:2009-05-18 20:33:24
【问题描述】:
c++中的struct和c#中的struct有区别吗?
【问题讨论】:
c++中的struct和c#中的struct有区别吗?
【问题讨论】:
在 C# 中,您使用结构来定义值类型(与 classes 声明的引用类型相反)。
在 C++ 中,结构与具有默认可访问性级别 public 的类相同。
所以问题应该是:C# 中的结构与 C++ 中的类不同吗?是的,它们是:不能从 C# 结构派生,不能有虚函数,不能定义默认构造函数,不能有析构函数等等
【讨论】:
C# 中的结构与类非常不同,请参阅Structs vs Classes 了解更多信息
C++ 中的结构与类相同,除了成员默认是公共的。 除此之外,C++ 结构可以做 C++ 类可以做的所有事情。
【讨论】:
是的。
c# 中的结构是普通的旧数据类型(按值)(与通过引用并具有所有 OO 内容的类相反)
c++ 中的结构只是默认公开的类。
【讨论】:
您是否尝试在托管 C++ 和 C# 之间进行互操作?如果是这样,有 C++ 的扩展允许这样做:请参阅 link
【讨论】:
C# 结构是托管代码,当没有人再引用它时,它将被 C# 垃圾释放。每当垃圾收集器决定清理它时,就会调用它的析构函数。
C++ 结构是一个非托管对象,您必须自己清理它。它的析构函数会在您删除它或超出范围时被调用。
【讨论】: