http://blog.sina.com.cn/s/blog_48f587a80100k630.html 描述了C++中struct和class的区别
http://www.cnblogs.com/gsk99/archive/2011/05/20/1904552.html 描述了C#中struct和class的区别
在C++中
区别1:struct默认public,class默认private(继承访问权限,成员访问控制)
继承时,如果一方是struct,一方是class,那么默认取决于子类。
区别2:class关键字可以用来定义模板参数,struct关键字不能
在C#中
区别1:class是引用类型,struct是值类型。因此class可以为null,struct不可以。
区别2:实例化class,创建在堆上,实例化struct,创建在栈上。
区别3:使用的是class对象的引用,直接使用struct。
区别4:class内部可以有初始化器,例如class A{int a=10;},struct内部不能有初始化器(报语法错误)
区别5:class可以有无参构造函数,struct不能(报语法错误)
区别6:class必须用new关键字实例化(class创建在堆上),struct不需要
区别7:class支持继承和多态,struct不支持,但是struct可以实现接口(C++中struct也可以继承和多态)
(因为struct不支持继承,所以struct成员不能以protected修饰)
区别8:class构造函数不需要初始化全部字段,struct构造函数必须初始化所有字段
区别9:class可以自定义析构函数,struct不可以