从语法上,在C++中。class和struct做类型定义时只有两点区别:
(一)默认继承权限。如果不明确指定,来自class的继承按照private继承处理,来自struct的继承按照public继承处理;
(二)成员的默认访问权限。class的成员默认是private权限,struct默认是public权限。
除了这两点,class和struct基本就是一个东西。语法上没有任何其它区别。
最后,作为语言的两个关键字,除去定义类型时有上述区别之外,另外还有一点点:“class”这个关键字还用于定义模板参数,就像“typename”。但关键字“struct”不用于定义模板参数。
C#中,
class 是引用类型, 特点: 1 、内存必须从托管堆分配; 2 、每个在托管堆中分配的对象有一些与之关联的附加成员必须初始化; 3 、从托管堆中分配的对象可能会导致垃圾收集。我对引用类型的理解就是个指针。
Struct 是值类型 ,分配在线程的堆栈上,不包含指向实例的指针。就像 int 、 double 、 char这些 值类型一样,也就是他们本身存储了值。