C和C++结构体区别
C和C++结构体的区别
- C的结构体内不允许有函数存在,C++允许有内部成员函数,且允许该函数是虚函数。所以C的结构体是没有构造函数、析构函数、和this指针的。
- C的结构体对内部成员变量的访问权限只能是public,而C++允许public,protected,private三种。
- C语言的结构体是不可以继承的,C++的结构体是可以从其他的结构体或者类继承过来的。
- 在C中定义一个结构体类型要用typedef,如下:
typedef
struct
Complex{
int
read;
int
image;
}Complex;
那么,在说明Complex变量的时候可以这样写
Complex complex;
但是如果没有typedef就必须用
struct
Complex complex;
来声明。这里的Complex实际上就是struct Complex的别名。另外这里也可以不写Complex(于是也不能struct Complex complex;了)
typedef
struct
{
int
read;
int
image;
}Complex;
但在c++里很简单,直接
struct
Complex{
int
read;
int
image;
};
于是就定义了结构体类型Complex,声明变量时直接Complex complex;
- 在c++中如果用typedef的话,又会造成区别:
struct
Complex1{
int
read;
int
image;
}complex;
//complex是一个变量
typedef
struct
Complex2{
int
read;
int
image;
}Complex2;
//Complex是一个结构体类型
使用时可以直接访问complex.read,但是Complex2则必须先Complex2 complex2;然后complex2.read = 1;
二、. 和-> 区别
定义结构体指针,访问成员时就用->
定义结构体变量,访问成员时就用.
例如:
struct A {
int a;
char b;
};
struct A q; 访问成员就用:q.a;
struct A *p; 访问成员就用:p->a;
参考自:https://blog.csdn.net/mengxiangjia_linxi/article/details/70308544
C和C++结构体区别相关推荐
- (07)System Verilog 类与结构体区别
(07)System Verilog 类与结构体区别 1.1 目录 1)目录 2)FPGA简介 3)System Verilog简介 4)System Verilog 类与结构体区别 5)结语 1.2 ...
- C++与C语言02 结构体区别
这里写目录标题 C++与C语言02 结构体区别 11-18 类型上不再需要struct关键字,直接用结构体名即可 C++结构体中允许函数存在 动态内存申请 内存池 string类型 C++与C语言02 ...
- 【知识积累】C#中结构体和类的区别
[类] 类是对现实生活中一类具有共同特征的事物的抽象.类的实质是一种数据类型,类似于int.char等基本类型,不同的是它是一种复杂的数据类型.因为它的本质是类型,而不是数据,所以不存在于内存 ...
- C++中类和结构体的区别
结构体和类的唯一区别就是: 结构体和类具有不同的默认访问控制属性 即:类中,对于未指定访问控制属性的成员,其访问控制属性为私有类型(private) 结构体中,对于未指定任何访问控制属性的成员,其访问 ...
- C和C++结构体的区别
C和C++结构体的区别 转自:https://www.cnblogs.com/qiumingcheng/p/7814970.html 1.C的结构体内不允许有函数存在,C++允许有内部成员函数,且允许 ...
- C语言结构体指针与结构体变量作形参的区别
区别 结构体变量 结构体变量作为函数参数,传递的是结构体变量本身,是一种值传递 形参结构体变量成员值的改变不影响对应的实参构体变量成员值的改变 结构体指针 结构体指针作为函数参数,传递的是指向结构体变 ...
- c/c++ 结构体前加不加typedef有什么区别?
结构体前面加不加typedef有什么区别? 为什么c程序中定义结构时经常要用到typedef呢?如: typedef struct _am_win_menutext { int idc int mes ...
- C++ VS C# 结构体和对象的细微区别
C++ VS C# 结构体和对象的细微区别 类与结构体在C++与C#中都是可以使用的,但是两者在两种语言中的区别却很大,今天在这里进行一下记录. 在C++中,类与结构体的唯一区别就是默认访问权限的区别 ...
- go面向对象编程:结构体struct详解、结构体实例的创建方式、结构体之间的转换(type取别名的使用)、方法的注意事项及与函数的区别
入门示例 package main import "fmt" //定义老师结构体,将老师中的各个属性 统一放入结构体中管理: type Teacher struct{//变量名字大 ...
最新文章
- LeetCode 905	 Sort Array By Parity--Java stream,Python lambda表达式一行 解法
- C#画图解决闪烁问题
- 软件工程网络15个人作业3——案例分析(201521123029 郑佳明)
- Docker发布应用程序指南
- matlab内置函数fitgeotrans与transformPointsForward解析
- android 转发短信
- GitHub 标星8.6K:将任何设备转换为电脑的辅助屏幕
- webcontent 与 webroot 问题解决
- SSH学习之二 OpenSSH配置文件解析
- PLC单按钮启停电路与特殊辅助继电器
- vivo应用商店服务器,vivo应用商店
- python怎么写入聚类标签_标签传播算法(Label Propagation)及Python实现
- MATLAB的卡尔曼滤波函数与实例
- 服务器系统要用GUID还是MBR,分享win10分区格式MBR和GUID有什么区别 教你区分MBR和GUID格式...
- 新购电脑已装显卡,但控制面板里找不到“NVIDIA 控制面板”怎么办?
- 保温杯内壁有很多小泡泡
- 【GDOI2014模拟】​Pty爬山
- Spring+SpringMVC+MyBatis明日方舟版人员信息管理系统前端页面代码前后端交互+SSM框架 管理员登录 游客登录 普通用户登录 人员的增删改查 信息更新 图片上传 分页查询)
- linux 自动mv脚本,linux replace rm to mv(脚本)
- replica文件服务器,mongodb replica set 配置高性能多服务器详解
热门文章
- URL传Base64 造成报错 Illegal base64 character 20
- ajax onerror code,Ajax请求'onError'处理程序
- gpt efi win7 linux,科学网—UEFI+GPTSSD+HDD 成功安装win10+Centos linux7 过程 - 陈长云的博文...
- swift中文文档_Flutter 中文文档:使用 Packages
- C语言挂载文件夹,使用autofs 按需挂载共享目录
- debian 安装java_debian9安装jdk1.8
- php session 反序列化,PHP SESSION反序列化本地样例分析
- Java常用设计模式————单例模式
- 获取php数组最后,php获取数组最后一个值的2种方法
- guid主分区表损坏怎么办_抹盘提示进程失败,导致Win 10无法正常开机怎么办?...