C++结构体和类的区别
在C++中,结构体是一种特殊形态的类。
结构体和类的唯一区别就是: 结构体和类具有不同的默认访问控制属性。
类中,对于未指定访问控制属性的成员,其访问控制属性为私有类型(private)
结构体中,对于未指定任何访问控制属性的成员,其访问控制属性为公有类型(public)
C++中,不使用结构体丝毫不会影响程序的表达能力。C++之所以要引入结构体,是为了保持和C程序的兼容性。
但有时仍会在C++中使用结构体,是因为,可以使用结构体将不同类型数据组成整体,方便于保存数据。(若用类来保存,因类中成员默认为私有,还要为每个数据成员特定函数来读取和改写各个属性,比较麻烦。)
C语言中结构体不允许定义函数成员,且没有访问控制属性的概念。
C++为C语言中的结构体引入了成员函数、访问控制权限、继承、包含多态等面向对象特性。
C++在struct之外引入了class关键字,但为了保持与C程序的兼容,C++保留了struct关键字,并规定结构体默认访问控制权限为公有类型。
另外,C语言中,空结构体的大小为0,而C++中空结构体(属于空类)的大小为1。
C++中空类的大小为1的原因:
空类也可以实例化,类实例化出的每个对象都需要有不同的内存地址,为使每个对象在内存中的地址不同,所以在类中会加入一个隐含的字节。
C++结构体和类的区别相关推荐
- 【唐老狮】C#——结构体和类的区别
[结构体和类的区别] 结构体是值类型,类是引用类型 结构体存在栈中,类存在堆中 结构体成员不能使用protected访问修饰符,而类可以 结构体成员变量申明不能指定初始值,而类可以 结构体不能申明无参 ...
- [C#]结构体和类的区别
结构体和类的区别: 在做一个项目时,使用了较多的结构体,并且存在一些结构体的嵌套,即某结构体成员集合包含另一个结构体等,总是出现一些奇怪的错误,才终于下决心好好分析一下到底类和结构体有啥不同, ...
- 结构体和类的区别详细讲解
结构体和类的区别 C的结构体和C++结构体的区别 C的结构体内不允许有函数存在,C++允许有内部成员函数,且允许该函数是虚函数.所以C的结构体是没有构造函数.析构函数.和this指针的. C的结构体对 ...
- C#中的结构体与类的区别
转载自:https://www.cnblogs.com/to-creat/p/5268729.html C#中的结构体与类的区别 经常听到有朋友在讨论C#中的结构与类有什么区别.正好这几日闲来无事,自 ...
- C#中结构体和类的区别
结构体和类同样能够定义字段,方法和构造函数,都能实例化对象,这样看来结构体和类的功能好像是一样的了,但是他们在数据的存储上是不一样的 C#结构体和类的区别问题 这两种数据类型的本质区别主要是各自指向的 ...
- C语言结构体与C++中结构体和类的区别
在C++中除了类中可以有构造函数和析构函数外,结构体中也可以包含构造函数和析构函数,这是因为结构体和类基本雷同,唯一区别是,类中成员变量默认为私有,而结构体中则为公有.注意,C++中的结构体是可以有析 ...
- C++中结构体与类的区别介绍
在参与以C++为编程基础的项目应用中总会遇到结构体类型与类的数据类型,但是其具体应用区别模糊不清 现将其区别总结如下,欢迎补充共同学习(先介绍C和C++中结构体的不同,再对比C++中结构体与类的区别) ...
- swift string转int_swift中结构体和类的区别(值类型和引用类型的区别)
在swift中结构体和类有着更多的相同之处,在一般的使用中能够做到互相替换.我们可以先看看官方文档的描述: Unlike other programming languages, Swift does ...
- 结构体和类的区别(待考究)
1.C的结构体和C++结构体的区别 1.1 C的结构体内不允许有函数存在,C++允许有内部成员函数,且允许该函数是虚函数.所以C的结构体是没有构造函数.析构函数.和this指针的. 1.2 C的 ...
- C/C++中结构体和类的区别
结构体是为能够保存不同类型的数据而存在的,因为数组朱能够保存一种数据类型,而在平时的编程中我们需要用到不同数据类型的一个整体结构,例如一个学生就有不同的属性,姓名,年龄,学号,性别等等,就需要用不同的 ...
最新文章
- Poptset学员之牛奶咖啡糖
- python是c语言吗-初学者python和c语言先学哪个好呢?
- 关于epoll 水平触发在udp套接字上不生效问题的原因
- Rus入门到放弃——字符串与字符切片
- 命令2-Create Project Tree
- PHP大文件分片上传
- Extension延展(十八)
- ASP.NET画图全攻略(上)
- 小苹果源地址_越狱常用源地址推荐
- linux修改sybase数据库密码,巧用Sybase数据库的超级用户密码
- RTX 2080 Ti 刚捂热,卡皇3080Ti 就要来了?
- jflash烧录教程_3.烧录方式及烧录软件的使用
- 基于MTCNN+arcface的人脸检测和人脸识别
- 以Apollo为例学习/分析自动驾驶运动规划算法
- C语言 - 求阶乘和
- Eclipse快捷方式无法在桌面上打开
- LibOpenCM3(二) 项目模板 Makefile分析
- 如何制作饼图?制作步骤有哪些?专业的饼图制作软件
- 计算机的运作流程的个人感想
- sharedpreferences用法,京东面试真题解析,大厂面试题汇总
热门文章
- 操作系统-----多核CPU和多个单核CPU
- 真相:朋友圈的“小黄图”从刷爆到被封的“惊魂七小时”
- 拼多多开店一定要知道
- linux看线程占用率,查看linux线程的CPU占用率
- 爬取实时航班信息 - 从航班信息网站获取实时航班信息
- 提示以只读方式打开文件
- 如何查看服务器CPU核心数和线程数
- ASP网页FLASH图片播放只能在老版Internet Explorer 正常显示,最新主流浏览器都不支持,哪位大伽有好的代码改动妙招烦请赐教,谢谢
- java 异步通知_Java 异步回调机制实例解析
- 苹果cms安装mysql检测失败_苹果cms安装失败的几种解决方法