浅谈C结构和C++结构之间的区别

今天我们来看一下:C结构和C++结构之间,到底有什么不一样地方!

在C++中,struct和class完全相同,除了struct默认为公共可见性和class默认为私有可见性。

C和C ++结构之间的一些重要区别:

结构内部的成员函数:C中的结构不能在结构内部具有成员函数,但是C ++中的结构可以与数据成员一起具有成员函数。

C语言:

这将在C中产生一个错误,但在C ++中不会产生任何错误。

输出:num = 9

直接初始化:我们无法在C中直接初始化结构数据成员,但可以在C ++中完成。

输出:7

使用struct关键字:在C语言中,我们需要使用struct来声明一个struct变量。在C ++中,没有必要使用struct。例如,让Record有一个结构。在C语言中,我们必须对记录变量使用“结构记录”。在C ++中,我们不需要使用struct,而仅使用'Record'才可以。

静态成员: C结构不能具有静态成员,但C++允许使用。

这将在C中产生一个错误,但在C ++中不会产生任何错误。

在结构中创建构造函数:C中的结构不能在结构内部具有构造函数,但是C ++中的结构可以具有构造函数创建。

输出:2个

sizeof运算符:此运算符将为C中的空结构生成0,而为C ++中的空结构生成1

在C中的输出: 0

在C ++中的输出: 1个

数据隐藏: C结构不允许数据隐藏的概念,但在C ++中是允许的,因为C ++是一种面向对象的语言,而C语言则不是。

访问修饰符: C结构没有访问修饰符,因为语言不支持这些修饰符。由于C ++结构是用语言内置的,因此可以具有此概念。

到此这篇关于浅谈C结构和C++结构之间的区别的文章就介绍到这了,更多相关C结构和C++结构区别内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • C++中对C语言结构体用法的扩充

    最近在学习C++,了解到,C++中对C做了扩充,使用结构体时也可以像类一样,规定私有数据类型和公有数据类型,同时也可以在struct中实现方法设置等等. 但为了保持面对对象的特性,建议还是使用class来描述一个类. 案例如下: #include <iostream> #include <ctime> using namespace std ; typedef struct student { private : int a , b , c ; public : void set(

  • 浅谈Python里面None True False之间的区别

    None虽然跟True False一样都是布尔值. 虽然None不表示任何数据,但却具有很重要的作用. 它和False之间的区别还是很大的! 例子: >>> t = None >>> if t: ... print("something") ... else: ... print("nothing") ... nothing 区分None和False.使用is来操作! >>> if t is None: ...

  • 浅谈Go语言中的结构体struct & 接口Interface & 反射

    结构体struct struct 用来自定义复杂数据结构,可以包含多个字段(属性),可以嵌套: go中的struct类型理解为类,可以定义方法,和函数定义有些许区别: struct类型是值类型. struct定义 type User struct { Name string Age int32 mess string } var user User var user1 *User = &User{} var user2 *User = new(User) struct使用 下面示例中user1和

  • 浅谈innodb的索引页结构,插入缓冲,自适应哈希索引

    Physical Structure of an InnoDB Index 所有的innodb索引都是btree索引,索引记录保存在叶子上,默认的索引页大小是16K.当有新的记录插入时,innodb出于对将来的insert和update操作的考虑,会尝试留下1/16的空闲页大小. 如果索引记录是完全按照索引记录的大小顺序插入的,那么索引也将填满整个页大小的15/16,如果插入顺序完全随机,那么索引页基本上填充为1/2至15/16自建.如果填充因子低于1/2,innodb会尝试重建b-tree.

  • 浅谈JavaScript中的分支结构

    说到JavaScript中的分支结构,我们就不得不提到流程控制这个词,我们所有的程序都是由数据和算法组成的. 程序=数据+算法 通常我们所说的算法都可以通过"顺序","分支","循环"三种结构来组合完成. 在ECMA中规定了一些语句(也称为流程控制语句,分支结构语句),从本质上来说,这些语句定义了ECMAScript中的主要语法,语句通常使用一个或者多个关键字来完成给定任务. 1.1 if 语句 if 语句 - 只有当指定条件为 true 时,使

  • 浅谈Python3.10 和 Python3.9 之间的差异

    目录 介绍: 了解 Python 及其用例: 分析 Python 3.9 V/s Python 3.10 的差异 Python 3.9: IANA 时区数据库 合并和更新字典的函数 删除前缀和后缀 在 Python 3.9 中对内置泛型类型使用类型提示 Python 3.10: 改进的语法错误消息 更好的类型提示 介绍: 在过去的几十年里,Python 在编程或脚本语言领域为自己创造了一个名字.python 受到高度青睐的主要原因是其极端的用户友好性.Python 还用于处理复杂的程序或编码挑战

  • 浅谈Java中Map和Set之间的关系(及Map.Entry)

    1.通过查找API文档: 2.Map.Entry是一个接口,所以不能直接实例化. 3.Map.entrySet( )返回的是一个collection集合,并且,这个collection中的元素是Map.Entry类型,如下图所示: 4. Map是Java中的接口,Map.Entry是Map的一个内部接口.java.util.Map.Entry接口主要就是在遍历map的时候用到. Map提供了一些常用方法,如keySet().entrySet()等方法,keySet()方法返回值是Map中key值

  • 浅谈SpringBoot项目打成war和jar的区别

    首先给大家来讲一个我们遇到的一个奇怪的问题: 1.我的一个springboot项目,用mvn install打包成jar,换一台有jdk的机器就直接可以用java -jar 项目名.jar的方式运行,没任何问题,为什么这里不需要tomcat也可以运行了? 2.然后我打包成war放进tomcat运行,发现端口号变成tomcat默认的8080(我在server.port中设置端口8090)项目名称也必须加上了. 也就是说我在原来的机器的IDEA中运行,项目接口地址为 ip:8090/listall,

  • 浅谈python中copy和deepcopy中的区别

    在下是个编程爱好者,最近将魔爪伸向了Python编程.....遇到copy和deepcopy感到很困惑,现在针对这两个方法进行区分,一种是浅复制(copy),一种是深度复制(deepcopy). 首先说一下deepcopy,所谓的深度复制,在这里我理解的是完全复制然后变成一个新的对象,复制的对象和被复制的对象没有任何关系,彼此之间无论怎么改变都相互不影响. 然后说一下copy,在这里我分为两类来说,一种是字典数据类型的copy函数,一种是copy包的copy函数. 一.字典数据类型的copy函数

  • 浅谈js函数的多种定义方法与区别

    定义一个函数一般有如下三种方式: 1.函数关键字(function)语句: function fnMethodName(x){ alert(x); } 2.函数字面量(Function Literals): var fnMethodName = function(x){alert(x);} 3.Function()构造函数: var fnMethodName = new Function('x', 'alert(x);') 上面三种方法定义了同一个方法函数fnMethodName,第1种就是最常

  • 浅谈Coreseek、Sphinx-for-chinaese、Sphinx+Scws的区别

    Sphinx是一个基于SQL的全文检索引擎:普遍使用于很多网站 Sphinx的特性如下: a)  高速的建立索引(在当代CPU上,峰值性能可达到10 MB/秒); b)  高性能的搜索(在2 – 4GB 的文本数据上,平均每次检索响应时间小于0.1秒); c)  可处理海量数据(目前已知可以处理超过100 GB的文本数据, 在单一CPU的系统上可处理100 M 文档); Sphinx本身对中文的支持并不好. 主要体现在对一段话断词:英文只需按照空格对其分词即可:但对于博大精深的中文来说,却是件困

随机推荐