c ++中的结构与c#中的结构有区别吗?

时间:2009-05-18 20:33:24

标签: c# c++

c ++中的结构与c#中的结构有区别吗?

5 个答案:

答案 0 :(得分:22)

在C#中,您使用结构来定义值类型(与class es声明的引用类型相对)。

在C ++中,结构与默认可访问性级别为public的类相同。

所以问题应该是:C#中的结构与C ++中的类不同,是的,它们是:你不能从C#结构派生,你不能拥有虚函数,你不能定义默认构造函数,你没有析构函数等

答案 1 :(得分:11)

C#中的结构与类非常不同,请参阅Structs vs Classes了解更多

C ++中的结构与类相同,但默认情况下成员是公共的。 除此之外,C ++结构可以完成C ++类可以做的所有事情。

答案 2 :(得分:0)

是。

c#中的

结构是普通的,按值,数据类型(与通过引用的类相反,并且具有OO的东西)

c ++中的结构只是默认情况下公开的类。

答案 3 :(得分:0)

您是否尝试在托管C ++和C#之间进行互操作?如果是这样,可以使用C ++扩展来实现此目的:请参阅link

答案 4 :(得分:0)

C#struct是托管代码,当没有人再引用它时,它将被C#garbage释放。每当垃圾收集器决定清理它时,就会调用它的析构函数。

C ++结构是一个非托管对象,您必须自己清理它。当你删除它时,它的析构函数是可预测的,或者它超出了范围。