C++中struct与class的区别

如果没有多态和虚拟继承,在C++中,struct和class的存取效率完全相同,存取class的数据成员与非虚函数效率和struct完全相同,不管该数据成员是定义在基类还是派生类。

class的数据成员在内存中的布局不一定是数据成员的声明顺序,C++只保证处于同一个access section的数据成员按照声明顺序排列

在C++中,class和struct做类型定义是只有两点区别:

1.默认继承权限不同,class继承默认是private继承,而struct默认是public继承
2.class还可用于定义模板参数,像typename,但是关键字struct不能同于定义模板参数

C++保留struct关键字,原因:

1.保证与C语言的向下兼容性,C++必须提供一个struct
2.C++中的struct定义必须百分百地保证与C语言中的struct的向下兼容性,把C++中的最基本的对象单元规定为class而不是struct,就是为了避免各种兼容性要求的限制
3.对struct定义的扩展使C语言的代码能够更容易的被移植到C++中。

通常情况下,大部分数据设为private,因此使用class情况比较多;
但是有时作为接口数据(public)或作为纯数据结构时,使用struct更方便,目的更明确。

参考链接:
https://blog.csdn.net/summer00072/article/details/80932376

c++

相关推荐