C++——struct和class的区别

2023-05-16

在C语言中struct是一种数据类型,那么就肯定不能定义函数,所以在面向c的过程中,struct不能包含任何函数。否则编译器会报错

而在C++中,其特性也有了新发展,就拿上面的错误函数来说,在c++中就能运行,因为在c++中认为数据和数据对象是一个整体,不应该分开,这就是struct在c和c++两个时代的差别。

在C++中struct得到了很大的扩充:

  • struct可以包括成员函数
  • struct可以实现继承
  • struct可以实现多态

struct和class的区别

  1. 默认访问权限不同。class默认的是private,strcut默认的是public。
  2. 默认访问权限:struct作为数据结构的实现体,它默认的数据访问控制是public的,而class作为对象的实现体,它默认的成员变量访问控制是private的。
  3.  “class”这个关键字还用于定义模板参数,就像“typename”。但关键字“struct”不用于定义模板参数
  4. class和struct在使用大括号{ }上的区别

关于使用大括号初始化

       1.)class和struct如果定义了构造函数的话,都不能用大括号进行初始化

  2.)如果没有定义构造函数,struct可以用大括号初始化。

  3.)如果没有定义构造函数,且所有成员变量全是public的话,class可以用大括号初始化。

原文链接:(37条消息) 【C++】struct和class的区别_c++ class和struct区别_忽晴忽雨江湖的博客-CSDN博客

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C++——struct和class的区别 的相关文章

  • C++ static constexpr 成员在类外重新声明

    对于以下代码 为什么 main 中的第一个案例无需重新声明 Foo bar 就可以正常工作 而带有该函数的第二个案例则需要它 struct Foo static constexpr int bar 30 Declaration of Foo
  • 如何在 Windows 上使用 Pyreverse

    我想使用pyreverse 创建图表类 我下载它 当我使用这个命令时 pyreverse bat c PyreverseCommand a1 s1 f ALL o png test py 我收到错误 名称 点 无法识别 什么是 点 如何创建
  • 多个结构体,需要在方法中访问相同的字段

    我目前尝试用 C 语言编写一些简单的控制台游戏来娱乐 为此 我需要能够在 嗯 C 中打印类似窗口的结构 我想使用通用渲染方法 让我们称之为frame render 渲染所有不同的 ui 元素 现在的问题是 如何解决这个问题 给定场景 The
  • C++ 中类定义的顺序

    我这里有点问题 我试图定义几个类 其中一些是玩家 一些是属于玩家的 Pawn 来自 Python 我习惯于能够通过 Pawn 方便地访问 Pawn 拥有的 Player 以及通过 Player 访问 Player 的 Pawn 如果我错了请
  • tkinter 应用程序中的 super()

    我无法理解这个错误 在下面的代码中 当我使用tk Frame一切都按预期进行 但是如果我使用super 我被抛出了AttributeError 应用程序对象没有属性 tk class Application tk Frame def ini
  • 列出类的所有实例

    我编写了一个 Python 模块 其中有几个类继承自一个名为MasterBlock 我想在脚本中导入此模块 创建这些类的多个实例 然后获取该类的所有子级的所有现有实例的列表MasterBlock班级 我找到了一些解决方案vars Block
  • 类运算符

    我在编写代码时遇到问题 void main Matrix c rows cols rows cols are int numbers c 0 0 2 the line that I m having a problem to do the
  • 如何动态构造方法?

    我设计了一个类 它非常标准 具有一些方法属性 class foo def f1 self print f1 def f2 self print f2 def fn self print fn 现在我想创建一个包含一组 foo 实例的类 cl
  • java中类的命名约定 - 全部大写

    在 Java 中 当类全部大写时 如何命名它 例如 如果我想创建一个班级来选择某些人成为 VIP 我应该将类命名为 VIPSelector 还是 VipSelector Thanks 你的两个选择都有效 类的主要目标是让它们以大写字母开头
  • 在 C 中初始化结构体的静态数组

    我正在用 C 实现一个纸牌游戏 纸牌有很多种类型 每种纸牌都有大量信息 包括一些需要单独编写与其关联的脚本的操作 给定这样的结构 并且我不确定我的语法是否适合函数指针 struct CARD int value int cost This
  • 结构中字符串的管理

    我知道字符串的长度是可变的 因此它们需要内存中的可变空间来存储 当我们在 a 中定义一个字符串项时struct the struct的大小的长度将是可变的 较旧的语言通过使用固定长度的字符串来管理此问题 但是 C 中没有办法定义固定长度的字
  • 在 C 或 C++ 中返回结构是否安全?

    我的理解是不应该这样做 但我相信我已经看到过这样做的示例 注意代码不一定在语法上正确 但想法就在那里 typedef struct int a b mystruct 然后这是一个函数 mystruct func int c int d my
  • 将结构体成员声明为 uint32_t 时的额外字节

    我在使用 stdint h 库中的 uint32 t 类型时遇到问题 如果我运行以下代码 在 Ubuntu linux 11 10 x86 64 g 版本 4 6 1 上 include stdint h include
  • Ruby 对象打印为指针

    我正在尝试创建一个类 它有一个带有单个参数的构造函数 当我创建该对象的新实例时 它返回一个指针 class Adder def initialize my num my num my num end end y Adder new 12 p
  • 从 python 中的类调用函数 - 不同的方式

    EDIT2 谢谢大家的帮助 编辑 添加 staticmethod后 它可以工作 但是我仍然想知道为什么我在这里遇到类型错误 我刚刚开始使用 OOPS 并且对它完全陌生 我有一个非常基本的问题 关于从类中调用函数的不同方式 我有一个 test
  • C# 中的类和模块有什么用

    有人可以解释一下类和模块之间的区别吗 你什么时候使用其中一种而不是另一种 我正在使用 C 更新 我的意思是相当于 VB 模块的 C 版本 这在很大程度上取决于您所指的 模块 Visual Basic 的模块 C 中没有真正等效的 VB Ne
  • 为什么结构中“[0]byte”的位置很重要?

    0 byte在golang中不应该占用任何内存空间 但这两个结构体的大小不同 type bar2 struct A int 0 byte type bar3 struct 0 byte A int 那么为什么这个位置 0 byte这里重要吗
  • JavaScript - 类根据条件扩展

    事情是这样的 我有一个名为 A 的主课 我希望这个班级能够扩展 B 级 class A extends B 但事实上 我希望 B 类在特定条件下扩展 C D 或 E class B extends B1 or class B extends
  • 类、模块、它们的特征类和方法查找

    我们来开公开课吧Module并向其中添加一个方法 class Module def foo puts phew end end 我可以通过这样做来调用这个方法 Class foo 这是可以理解的 因为类Class is Class 其超类是
  • C++类名冲突

    我现在正在做一个项目 需要整合两个子项目 项目A是用C 编写的 项目B是用C编写的 一个问题是 在项目B中 有一个名为vector它是由其作者创建的 在项目 A 中 std vector in STL用来 因为项目B以后可能会更新 所以我不

随机推荐

  • C语言 epoll实现IO多路复用

    友链 gcc 1 c o 1 lpthread ctrl 43 f搜索服务端代码和客户端代码获取代码 该方法也可以实现并发服务器 服务端代码 span class token comment 使用内存映射可以拷贝文件 span span c
  • 1.2 struct和class最本质区别_马鸿凯_新浪博客

    C 43 43 中的struct对C中的struct进行了扩充 xff0c 它已经不再只是一个包含不同数据类型的数据结构了 xff0c 它已经获取了太多的功能 struct能包含成员函数吗 xff1f 能 xff01 struct能继承吗
  • 在 VSCode 终端里无法使用命令

    问题原因 xff1a 导致 vscode 的终端里执行命令报错 xff0c 但在 cmd 里能正常执行 的原因是 vscode 终端不能使用命令了 解决思路 xff1a 令 vscode 终端能够使用命令 解决方案 xff1a 1 右击 V
  • 使用 FFT 进行频谱分析

    下面的示例说明了如何使用 FFT 函数进行频谱分析 FFT 的一个常用场景是确定一个时域噪声信号的频率分量 首先创建一些数据 假设是以 1000 Hz 的频率对数据进行的采样 首先为数据构造一条时间轴 xff0c 时间范围从 t 61 0
  • CRC-16 / MODBUS 校验计算方法

    CRC 16 MODBUS xff1a 1 xff09 CRC寄存器初始值为 FFFF xff1b 即16个字节全为1 xff1b 2 xff09 CRC 16 MODBUS的多项式A001H 1010 0000 0000 0001B H
  • ZYNQ下驱动ADF5355试验成功

    前两个集BLOG分别给出了ADF5355接口的VERILOG设计实现以及设置频率的C语言算法 xff0c 我今天试验了以 xff0c 试验成功了 首先很重要的是ADF5355寄存器配置的设置 xff1a 可以在这个基础上修改输入以及输入频率
  • 基于sdrpi的openwifi实践1:编译openwifi-hw

    www github com open sdr openwifi hw是openwifi的硬件项目 hw应该就取haraware之意思 xff0c 包含就是支持多个板子的项目以及openwifi作者写的一系列的简洁好用工具软件 我在做sdr
  • lmx2594的verilog驱动

    应朋友请求写了一个纯VERILOG的LMX2594的配置 首先写一个SPI的接口 xff1a lmx2594 spi master lmx2594 spi master clk rst W0R1 pin mosi pin sclk pin
  • ZC706P+ADRV9009连接RADIOVERSE详解之三

    做好SD卡映像 xff0c 连接好硬件之后 xff0c 我们就可以尝试软件操作了 步骤1 xff1a 设置好网络 打开软件界面我们看到 xff0c 板子默认的地址为192 168 1 10 端口号为55555 我们一定也设置跟板子连接的以太
  • PCIE的AXI LITE MASTER端使用

    参考文章 xff1a https blog csdn net mcupro article details 121668833 spm 61 1001 2014 3001 5501 近期计划设计一个PCIE接口的使用AD9361芯片的SDR
  • ZC706P试验PL_DDR3内存条的步骤方法

    ZC706P 板卡完全兼容XILINX官方的ZC706 当然也支持PL外挂的1G的DDR3内存条 xff0c 这个片BLOG我提供从官方下载的一个文档和一个项目 xff0c 演示一下验证DDR3的步骤 步骤1 xff1a 准备好板子 xff
  • 【ZedBoard实验随笔】OV7670 摄像头 简单总结

    1 xff0c OV7670 有一大堆寄存器需要配置 xff0c 这些配置可以参考别人已经做好的代码 2 xff0c OV7670 设置为640 480 16的分辨率 xff0c 30帧每秒 xff0c 就是30FPS xff0c 每一个R
  • AXI STREAM ,AXIS总线的理解

    全兼容ZEDBOARD 开发板子 SYSCLK TAOBAO COM 1 xff0c VALID和READY 是所有AXI总线必须有的 xff0c VALID是MASTER告诉SLAVE数据已经展现在了总线上了 xff0c 你可以取走了 x
  • ZYNQ7 DACHE的重要操作

    Flush the SrcBuffer before the DMA transfer in case the Data Cache is enabled Xil DCacheFlushRange u32 TxPacket MAX PKT
  • OV7670摄像采集图像在VGA上显示的分析和实现,精确到每个时钟,每行代码。

    OV7670使用RGB565模式 xff0c 30FPS xff0c 采集分辨率为640X480 xff0c 保存在ZYNQ7芯片7Z020的内部BRAM VGA控制器在读出端读出数据 xff0c 并用12BIT的色彩深度现在VGA接口屏幕
  • Ubuntu 20.04 python2安装pip

    Ubuntu 20已经无法通过apt来安装python2的pip2了 xff0c 只能安装python3的pip 方法 先确保你有python2 暂时还是可以用apt安装python2 sudo apt install python2 下面
  • PetaLinux 2019.1详细安装步骤以及所需要文件

    这里主要根据UG1144文档 xff0c 这两天成功安装使用了PetaLinux的最新版本2019 1 一 xff0c 在虚拟机里安装Ubuntu16 04 1 xff0c 选Ubuntu 操作系统的版本是16 04 我最初尝试过18版本的
  • STC芯片在Keil中的添加与使用

    一 使用官方烧录工具 stc isp v6 88K exe在Keil中添加STC芯片 此烧录工具可在STC官网上下载 二 打开STC ISP软件 xff0c 选择右侧 Keil仿真设置 栏 三 选择 添加型号和头文件到Keil中 添加STC
  • boost 与 C++11 比较

    先不说boost的初始化表是多么怪异的形式了 c 43 43 11用大括号一括起来就OK了 auto 和 boost auto 差别太大了 xff0c 必须得告诉boost auto宏一个类型 xff0c 而非编译器本身的推断 xff0c
  • C++——struct和class的区别

    在C语言中struct是一种数据类型 xff0c 那么就肯定不能定义函数 xff0c 所以在面向c的过程中 xff0c struct不能包含任何函数 否则编译器会报错 而在C 43 43 中 xff0c 其特性也有了新发展 xff0c 就拿