初学类与结构体,很多人会觉得两者很是相像,那么类与结构体到底有何种区别呢?
事实上,不同的人对类与结构体的理解都各不相同。
在C++中类与结构体在语义上的区别仅仅是类中的成员默认为私有,而在结构体中的成员默认为公有,这意味着如果我们将一个类修改为结构体,事实上也是可行的,只需要我们将class替换为struct并且稍微修改一下成员的可见性即可,反之同理。 那么既然两者如此相像,那为什么c++中不去掉其中一个,而要两者都进行保留呢?
1.为了兼容性
C++作为C的继任者保留了C当中的很多语法,为了更好的继承C所以C++中保留了结构体这一概念,在C中没有类只能使用结构体去完成对一个对象的构建,为了与C更好的兼容,C++也保留了这一特性
2.在实际使用当中会不会有所区别呢?比如在某些时候用结构体,某些时候用类?
显然并不是,类与结构体在语义上的相似,使得两者实际没有多大区别,因此没有必要纠结于什么时候用类什么时候用结构体这样的问题。这样的问题事实上取决于你个人的编程风格。
我个人喜欢在需要继承的时候使用类,不需要的时候两者皆可,因为在继承时本身是更更复杂层次的东西,而结构体我只喜欢他去放某些数据而已,但这里要注意一点,事实上结构体也可以进行继承,甚至可以混合使用这些类型,例如:我有一个叫做a的类和一个叫做b的结构体,这个b结构体继承自a,某些编译器会警告,但是仍然可以运行
总而言之,类与结构体在技术上没有多少区别,除了可见性,你可以在任何可以使用类的地方使用结构体,它们将以相同的方式工作。