Class(类) vs Struct(结构体) in C++

       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是最让人难以阅读的,也最不容易 维护的。

延深阅读《C++访问修饰符:public vs private vs protected》

你可能感兴趣的:(Class(类) vs Struct(结构体) in C++)