码迷,mamicode.com
首页 > 编程语言 > 详细

C++中struct与class的区别

时间:2020-05-12 09:26:12      阅读:63      评论:0      收藏:0      [点我收藏+]

标签:的区别   方便   数据结构   关键字   ++   扩展   而不是   虚拟继承   成员   

如果没有多态和虚拟继承,在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++中struct与class的区别

标签:的区别   方便   数据结构   关键字   ++   扩展   而不是   虚拟继承   成员   

原文地址:https://www.cnblogs.com/chendeqiang/p/12861580.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!