在C++中我们可以看到struct和class的区别并不是很大,两者之间有很大的相似性。那么为什么还要保留struct,这是因为C++是向下兼容的,因此C++中保留了很多C的东西。
1 struct
首先,C种的struct是一种数值类型,那么就肯定不能定义成员函数,而C++做了相应的扩充,扩充如下:
- struct可以包括成员函数
- struct可以实现继承
- struct可以实现多态
那struct和class到底有什么区别呢?
2 struct和class的区别
-
**默认的继承访问权。class默认的是private,struct默认的是public。**即class默认继承方式是private继承,而struct是public继承。所以我们在写类的时候都会要求我们指定是公有继承还是私有继承。
-
默认访问权限。struct作为数据结构的实现体,它默认的数据访问控制是public的,而class作为对象的实现体,它默认的成员变量访问控制是private的。
-
“class”这个关键字还用于定义模板参数,就像“typename”。但关键字“struct”不用于定义模板参数。例如:
template<class T> class A { A(T num); };
3 总结
虽然感觉struct是多余的,但考虑到**“对c兼容”就将struct保留了下来,并做了一些扩展使其更适合面向对象,所以c++中的struct再也不是c中的那个了**。
两者最大的区别就在于思想上,c语言编程单位是函数,语句是程序的基本单元。而C++语言的编程单位是类。从c到c++的设计由过程设计为中心向以数据组织为中心转移。