C++中class和struct的区别已经讨论过很多次了, 但是都不太完整,我就把我的心得说一下 , 总结一下两者的异同点, 有错误的地方请多多包涵。
首先先谈一谈相同点: 在C++中, struct和class变得几乎相同了, 这是为了兼容C语言而保留的struct,;
struct能包涵成员函数, struct能实现继承,struct能实现多态, struct几乎和class一样了 ;
但是struct与class有本质上的区别:
一、 struct是结构体式的东西, 而class是对象的东西, 所以struct存储在栈上, 而class存储在堆上, 这是其本质区别;故struct的实现体不需要gc来分配和释放内存;
二、struct的默认属性是public, 而class的默认属性是private;
三、struct的继承默认属性也是public :
如: class A{ public: int a =0;}; class B : A{}; struct C:A{};
在这两种继承中,B不可访问a , 而C可以访问a;
四、class定义的类可以作为模板的参数, 而struct不可以作为模板的参数;
其实struct是一个数据结构的实现体, 而class是一个面向对象的实现体;
struct和class的最本质的区别应该是在思想