C++中的Class 和 Struct,从语法上来看,真的是很相似,都可以把Data和Function打包到一起,完成信息的封装,二者实现的功能基本可以100%互相替代,如下面的代码所示:
从默认可访问角度来说,没有访问权限关键字(access specifier)修饰的情况下,class里面的成员默认都是private的,struct里面的成员默认都是public的。
从默认继承性角度来说,struct对父类的继承默认为public继承,class对父类的继承默认为private继承。
从向前兼容的角度来说,struct的存在是为了兼容大量的C标准代码;若不考虑兼容C标准代码,用纯面向对象的风格编写程序,struct可以完全忽略不用。
从数据结构的角度来说,若要定义一个数据结构(只有数据,没有行为),优先考虑struct;若要定义一个类(有行为),优先考虑用class。当然,最好的编程实践是,保持一致性:若喜欢用class,程序里面的所有实现都用class;若喜欢用struct,程序里面的所有实现都用struct。混合使用class和struct是最让人难以阅读的,也最不容易 维护的。