C和C++结构体的区别

转自:https://www.cnblogs.com/qiumingcheng/p/7814970.html

1.C的结构体内不允许有函数存在,C++允许有内部成员函数,且允许该函数是虚函数。所以C的结构体是没有构造函数、析构函数、和this指针的。
2.C的结构体对内部成员变量的访问权限只能是public,而C++允许public,protected,private三种。
3.C语言的结构体是不可以继承的,C++的结构体是可以从其他的结构体或者类继承过来的。
4.在C中定义一个结构体类型要用typedef,如下:

typedefstructComplex{intread;intimage;
}Complex;

那么,在说明Complex变量的时候可以这样写

Complex complex;

但是如果没有typedef就必须用

structComplex complex;

来声明。这里的Complex实际上就是struct Complex的别名。另外这里也可以不写Complex(于是也不能struct Complex complex;了)

typedefstruct{intread;intimage;
}Complex;

但在c++里很简单,直接

structComplex{intread;intimage;
};

于是就定义了结构体类型Complex,声明变量时直接Complex complex;

在c++中如果用typedef的话,又会造成区别:

structComplex1{intread;intimage;
}complex;//complex是一个变量
typedefstructComplex2{intread;intimage;
}Complex2;//Complex是一个结构体类型

使用时可以直接访问complex.read,但是Complex2则必须先Complex2 complex2;然后complex2.read = 1;

C和C++结构体的区别相关推荐

  1. C#中类与结构体的区别

    1.在C#中结构体类型定义时,成员是不能初始化的,这样就导致了,定义结构体变量时,变量的所有成员都要自己赋值初始化.但对于类,在定义类时,就可以初始化其中的成员变量,所以在定义对象时,对象本身就已经有 ...

  2. c语言结构共用体的作用,浅谈C语言共用体和与结构体的区别

    共用体与结构体的区别 共用体: 使用union 关键字 共用体内存长度是内部最长的数据类型的长度. 共用体的地址和内部各成员变量的地址都是同一个地址 结构体大小: 结构体内部的成员,大小等于最后一个成 ...

  3. C++中类和结构体的区别

    结构体和类的唯一区别就是: 结构体和类具有不同的默认访问控制属性 即:类中,对于未指定访问控制属性的成员,其访问控制属性为私有类型(private) 结构体中,对于未指定任何访问控制属性的成员,其访问 ...

  4. C#类与结构体的区别

    C#中类(class)与结构体(stract)的区别: 1.类是引用类型,结构体是值类型: 2.结构体不支持继承,但可以实现接口,类即支持继承也能实现接口: 3.结构体中不可以声明无参的构造函数: 4 ...

  5. C++类和结构体的区别

    经测试(编译环境为VC6.0),发现C++结构体与类只有一个区别,就是类默认的成员是private,结构体默认的成员是public. 结构体可以定义public.private.protected,可 ...

  6. [绍棠_Swift] Swift中类和结构体的区别

    类和结构体有许多相同之处,也有许多不同之处. 二者区别如下: 1,类可以继承,结构体不可以 2,可以让一个类的实例来反初始化,释放存储空间,结构体做不到 3,类的对象是引用类型,而结构体是值类型.所以 ...

  7. 【C++】类与结构体的区别

    C++中结构体(struct) 我们知道C++中的 struct 对C中的 struct 进行了扩充,它不再是只能用来封装不同类型数据的数据结构了,而是拥有了更多的功能,例如:可以包含成员函数,可以继 ...

  8. C里的共同体和结构体的区别

    共用体 构造数据类型,也叫联合体 用途:使几个不同类型的变量共占一段内存(相互覆盖) 结构体是一种构造数据类型 用途:把不同类型的数据组合成一个整体-------自定义数据 结构体变量所占内存长度是各 ...

  9. matlab单元数组与结构体的区别,MATLAB中的结构体和单元数组

    MATLAB中的结构体和单元数组 一.结构: x.real=10 x.imag=5 增加字段 x.scale=1 使用struct函数 s=struct('field1',values1,'field ...

最新文章

  1. Sql Server:创建用户并指定该用户只能看指定的视图
  2. 如何使用pyecharts中自带的数据集?
  3. CS专业读PhD是否有意义?附CS奖学金项目清单
  4. python3 matlabplot 和numpy 简单绘图
  5. 把tomcat服务器配置为windows服务的方法
  6. CCPC Training Class
  7. 【渝粤题库】国家开放大学2021春2094法理学题目
  8. bzoj:2331: [SCOI2011]地板
  9. 常用数据手册(Datasheet)下载网站
  10. 如何清空c盘只剩系统_电脑C盘怎么清理到最干净?高手教你清理C盘的详细步骤...
  11. ele-calendar 组件的使用
  12. 在centos上安装pycharm
  13. CSS3简易表盘时钟
  14. 人民币大写数字 C++
  15. 微信小程序生成二维码的示例代码
  16. 【vue】mint-ui中navbar下划线不显示的问题
  17. 飞猪双11成绩单背后 藏了什么玄机
  18. sql compact 转mysql_如何将数据导入到 SQL Server Compact Edition 数据库中(三)
  19. PySpark 累加器使用及自定义累加器
  20. lightbox图片展示效果

热门文章

  1. 线程的创建 验证线程之间共享数据 守护线程 线程进程效率对比 锁 死锁 递归锁...
  2. C语言建立有向图的邻接表及其遍历操作
  3. 《零基础入门学习Python》学习过程笔记【013元组】
  4. 黑马程序员——c语言学习心得——函数传递二维数组
  5. 8条腾讯的产品管理方式
  6. 如何在aspx.cs 里面获取html 控件值
  7. eclipse配置了maven,项目报错
  8. 【转】POWER MANAGEMENT IN IEEE 802.11
  9. VMware安装和使用时遇到的一些小问题及解决方法
  10. 搞笑视频分析---2、爱做饭的芋头:手搓冰粉