今天学生问我,class 和 struct 到底有什么区别?我说:“在C++中,没有什么区别”,课下查阅一番,总结入下:
1)在C中struct是用来封装数据的,其中不能够有函数成员,变量默认的存取权限是public的;
2)而在C++中集成了在C中的用法并做出改进,那就是允许struct中有成员函数,这纯粹是为了和C兼容,因此如果不需要和C兼容或传递参数给C,建议在C++中不用struct,
而实际中,大多数程序员习惯用struct定义只含数据成员的结构,而用class定义既含数据成员也汗函数成员的结构;
3)在C++中两者有微小的用法差异:一是class中成员默认的存取权限是private的,而struct中成员默认是public的;二是在用模板的时候只能写成template <class Type>或template <typename Type>,而不能写成<struct Type>;
4)另外,可以这样说不管定义在基类还是派生类,class的data member 和 非virtual function的存取效率和struct是一样的(或说如果没有多态和虚拟继承,二者存取效率相同);
PS:如有不恰当之处,望请指教!