1. C和C++中struct的区别
(1) C中不支持成员函数(只能通过函数指针成员变量间接支持),而C++源生支持。
(2) C中不支持static成员,而C++中支持。
(3) 访问权限,C中默认public,C++中默认public,但是可以显式指定public/private/protected三者之一。
(4) 继承特性上,C中不支持(只能通过结构体包含来间接实现),而C++源生支持,且struct和class可以互相继承。
(5) 初始化方面,C中靠初始化式(gcc扩展了初始化语法),而C++靠构造函数所以初始化更自由可定制化。
2. C++中struct和class的区别
(1) 默认成员权限,struct默认public,class默认private(如果一个成员不在public,private任何标签下,就是默认权限private)。
(2) 继承关系的权限管控,struct默认public,class默认private。
(3) struct和class交叉继承时,默认的权限管控取决于子类而不是基类。
(4) 模板相关使用都用class,而不用struct了。