c/c++--struct对比

目录

C++ struct的使用:

1.1 默认访问控制(Access Control):

1.2. 继承权限(Inheritance Access):

1.3. 构造函数、析构函数、成员函数:

2. 与c语言的对比

C语言中的区别:


在C/C++中,struct(结构体)和 class(类)都是用来创建自定义数据类型的关键字,但是也有许多不同之处

C++ struct的使用:

在复习之前,首先将struct的功能与class进行一下对比差异:

1.1 默认访问控制(Access Control)

struct成员默认是 public 的。也就是说,在结构体中声明的变量和方法是可以被外部代码直接访问的。

class成员默认是 private。也就是说,在类中声明的变量和方法默认只能在类的内部访问,外部代码无法直接访问。

struct MyStruct {int x; // 默认是 public
};class MyClass {int x; // 默认是 private
};

1.2. 继承权限(Inheritance Access)

struct:默认继承权限为 public。也就是说,继承自结构体时,基类的成员会是 public

class:默认继承权限为 private。也就是说,继承自类时,基类的成员会是 private

struct BaseStruct {int x;
};struct DerivedStruct : BaseStruct {  // 默认 public 继承void print() {std::cout << x << std::endl;  // 可以访问基类成员}
};class BaseClass {int x;
};class DerivedClass : BaseClass {  // 默认 private 继承void print() {// std::cout << x << std::endl;  // 编译错误,x 是 private}
};

1.3. 构造函数、析构函数、成员函数

  • struct:在C++中,structclass 都可以有构造函数、析构函数和成员函数。没有语言上的限制。
  • class:和 struct 一样,class 也支持构造函数、析构函数、成员函数。
struct MyStruct {int x;MyStruct(int val) : x(val) {} // 构造函数~MyStruct() {} // 析构函数void display() { std::cout << x << std::endl; } // 成员函数
};class MyClass {int x;
public:MyClass(int val) : x(val) {} // 构造函数~MyClass() {} // 析构函数void display() { std::cout << x << std::endl; } // 成员函数
};

2. 与c语言的对比

C语言中的区别

struct:在C语言中,struct 是唯一的方式来定义复合数据类型。C语言中没有 class 关键字,因此类的概念在C中是没有的。C语言中的 struct 可以包含成员变量,但不能包含方法(函数)。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/469725.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

微服务电商平台课程三:搭建后台服务

前言 上节课,我们一起完成基础环境搭建,这节课, 我们利用上节课搭建我们电商平台.这节课我们采用开源代码进行搭建, 不论大家后续从事什么行业,都要学会站在巨人的肩膀上. 之前所说的,整个微服务平台的技术栈也是非常多的, 由于时间和效果的关系, 我们不可能从每个技术一步一…

解决MySQL中整型字段条件判断禁用不生效的问题

MySQL中&#xff0c;当尝试将整数与字符串进行比较时&#xff0c;数据库可能会尝试将字符串转换为整数。在这种情况下&#xff0c;空字符串会被转换为整数0&#xff0c;所以0 ! 会被解释为0 ! 0&#xff0c;结果自然是false。 在开发过程中&#xff0c;我们经常需要对数据库中的…

大数据技术在金融风控中的应用

&#x1f493; 博客主页&#xff1a;瑕疵的CSDN主页 &#x1f4dd; Gitee主页&#xff1a;瑕疵的gitee主页 ⏩ 文章专栏&#xff1a;《热点资讯》 大数据技术在金融风控中的应用 大数据技术在金融风控中的应用 大数据技术在金融风控中的应用 引言 大数据技术概述 定义与原理 发…

微信小程序_模板与配置_day2

一、目标 A. 能够使用WXML模板语法渲染页面结构 B. 能够使用WXSS样式装饰页面结构 C. 能够使用app.json对小程序进行全局性配置 D. 能够使用page.json对小程序页面进行个性化配置 E. 能够知道如何发起网络数据请求 二、目录 A. WXML模板语法 B. WXSS模板样式 C. 全局配置 D.…

网络安全技术在能源领域的应用

摘要 随着信息技术的飞速发展&#xff0c;能源领域逐渐实现了数字化、网络化和智能化。然而&#xff0c;这也使得能源系统面临着前所未有的网络安全威胁。本文从技术的角度出发&#xff0c;探讨了网络安全技术在能源领域的应用&#xff0c;分析了能源现状面临的网络安全威胁&a…

设计模式-七个基本原则之一-单一职责原则 + SpringBoot案例

单一职责原理:(SRP) 面向对象七个基本原则之一 清晰的职责&#xff1a;每个类应该有一个明确的职责&#xff0c;避免将多个责任混合在一起。降低耦合&#xff1a;通过将不同的职责分开&#xff0c;可以降低类之间的耦合度&#xff0c;提高系统的灵活性。易于维护&#xff1a;当…

nvm 安装指定node版本时--list 显示为空

1、安装nvm 2、查看nvm 可安装的list 语句&#xff1a; nvm list available 注&#xff1a; 可能需要安装的不在list 中&#xff0c;可直接 用命令语句 安装指定版本 nvm install 12.18.1 如果安装list 显示为空 找到安装路径下的 settings.txt,最后两行没有的添加上&#x…

[HNCTF 2022 Week1]ret2shellcode-好久不见12

知识点&#xff1a;1.shellcode获取 获取Shellcode的两种方法&#xff1a; 手写&#xff1a;想办法调用execve("/bin/sh",null,null) 传入字符串&#xff1a;/bin///sh 系统调用execve pwntools自动生成&#xff1a; 先指定context.arch"i386/amd64" …

实现3D热力图

实现思路 首先是需要用canvas绘制一个2D的热力图&#xff0c;如果你还不会&#xff0c;请看json绘制热力图。使用Threejs中的canvas贴图&#xff0c;将贴图贴在PlaneGeometry平面上。使用着色器材质&#xff0c;更具json中的数据让平面模型 拔地而起。使用Threejs内置的TWEEN&…

力扣 LeetCode 977. 有序数组的平方(Day1:数组)

解题思路&#xff1a; 方法一&#xff1a;先平方再快排 方法二&#xff1a;双指针 因为可能有负数&#xff0c;所以对于一个数组 [ -5 , -3 , 0 , 2 , 4 ] 可以从两边向内靠拢&#xff0c;最大值一定出现在两端 设置指针 i 和指针 j 分别从左右两边靠拢 因为要从小到大排序…

[vulnhub] DarkHole: 1

https://www.vulnhub.com/entry/darkhole-1,724/ 端口扫描主机发现 探测存活主机&#xff0c;184是靶机 nmap -sP 192.168.75.0/24 Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-11-08 09:59 CST Nmap scan report for 192.168.75.1 Host is up (0.00027s latency). MA…

[免费]SpringBoot+Vue3校园宿舍管理系统(优质版)【论文+源码+SQL脚本】

大家好&#xff0c;我是java1234_小锋老师&#xff0c;看到一个不错的SpringBootVue3校园宿舍管理系统(优质版)&#xff0c;分享下哈。 项目视频演示 【免费】SpringBootVue3校园宿舍管理系统(优质版) Java毕业设计_哔哩哔哩_bilibili 项目介绍 随着信息技术的不断发展&…

docker基础:搭建centos7(详见B站泷羽sec)

docker的简单学习&#xff1a; sudo apt-get update //这个命令让系统检查有没有新软件 sudo apt-get install docker.io //安装 Docker sudo docker version //查看是否安装成功&#xff0c;显示docker的版本信息 启用Docker 启…

Vue3入门介绍及快速上手

vue3 文章目录 vue31、概况2、快速入门3、常用指令3.1、v-for3.2、v-bind3.3、 v-if & v-show3.4、v-model3.5、 v-on 4 生命周期5、 工程化5.1、环境准备5.2、Vue项目-创建5.3、Vue项目开发流程5.4、组合式API5.5、reactive和ref函数5.6、watch5.7、父子组件通信 6、Vue路…

【ARM Coresight OpenOCD 系列 5 -- arp_examine 使用介绍】

文章目录 OpenOCD arp_examine 使用 OpenOCD arp_examine 使用 因为我们很多时候运行 Openocd 的时候有些 core 还没有启动, 所以最好在配置脚本中添加 -defer-examine这个参数, 如下&#xff1a; #cortex-m33 target create ${_CHIPNAME}.m33 cortex_m -dap ${_CHIPNAME}.da…

【大数据学习 | kafka高级部分】kafka的kraft集群

首先我们分析一下zookeeper在kafka中的作用 zookeeper可以实现controller的选举&#xff0c;并且记录topic和partition的元数据信息&#xff0c;帮助多个broker同步数据信息。 在新版本中的kraft模式中可以这个管理和选举可以用kafka自己完成&#xff0c;而不再依赖zookeeper。…

用户裂变数据分析

用户增长是一个工作和找工作的时候都不可避免的话题&#xff0c;那么用户增长&#xff0c;该怎么做数据分析&#xff1f;本文从两个方面分享了大部分企业做用户增长的方法&#xff0c;希望对你有所帮助。 01 用户增长的基本办法 1. 买量 在互联网公司中&#xff0c;买量是占…

论文分享:DiskANN查询算法

详细总结了三篇有关DiskANN最邻近查询图算法的论文 欢迎大家来点赞&#xff0c;更欢迎感兴趣的友友来探讨&#xff01; DiskANN的提出(NurIPS’19)文献分享: Vamana图算法以及面向SSD的DiskANN文章浏览阅读797次&#xff0c;点赞21次&#xff0c;收藏8次。NurIPS‘19_vamana图…

第16章 SELECT 底层执行原理

一、SELECT查询的完整结构 1.1 方式一&#xff08;SQL 92语法&#xff09; SELECT ..., ..., ... FROM ..., ..., ... WHERE 多表的连接条件 AND 不包含组函数的过滤条件 GROUP BY ..., ... HAVING 包含组函数的过滤条件 ORDER BY ... ASC/DESC LIMIT ..., ... 1.2 方式二&a…