c ++中的结构与c#中的结构有区别吗?
答案 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 ++结构是一个非托管对象,您必须自己清理它。当你删除它时,它的析构函数是可预测的,或者它超出了范围。