当前位置: 首页 > article >正文

C语言类的基本语法详解

1、由C语言的结构体进入到C中的类我们在C语言中当需要定义多个变量的数据集合时第一时间会想到使用结构体来进行定义例如我们定义一个学生变量包含姓名、年龄、性别等信息代码示例如下:12345structStudent{charname[12];intage;charsex[4];};但是到了C用由于C面向对象的语法特性给struct关键字进行了升级不仅仅可以在struct中定义变量还可以定义函数也由此可利用struct来定义一个学生类。代码示例如下1234567891011structStudent{charname[12];intage;charsex[4];voidshow(){cout姓名nameendl;cout年龄ageendl;cout性别sexendl;}};如上所示在C中利用struct关键字定义了一个学生类因为C是兼容C的所以该类在使用时可以当作Student结构体来使用也可以当作Student类来使用(一定是在C中)两种使用如下1234//作Student结构体来使用structStudent strs;//作Student类来使用Student clas;2、C中如何定义类C中定义类的语法格式为class 类名下面直接上代码示例12345classclassName{// 类体由成员函数和成员变量组成};// 一定要注意后面的分号class为定义类的关键字ClassName为类的名字{}中为类的主体注意类定义结束时后面分号。类中的元素称为类的成员类中的数据称为类的属性或者成员变量; 类中的函数称为类的方法或者成员函数。3、C中实例化一个对象C中对象的实例化可以理解成有一个类模具根据这个类模具制造出来了许多与类中特性相同的产品。利用学生类实例学生对象示例如下12345Student s1;Student s2;Student s3;//s1、s2、s3这些都是类的实例化对象一个类可以实例化无限个对象//并且这些对象都是不相关的。4、C类的访问限定及其封装 C中的访问限定符C实现封装的方式用类将对象的属性与方法结合在一块让对象更加完善通过访问权限选择性的将其接口提供给外部的用户使用。C中的访问限定符有public、private、protected1、public修饰的成员在类外可以直接被访问2、protected和private修饰的成员在类外不能直接被访问(此处protected和private是类似的)3、访问权限作用域从该访问限定符出现的位置开始直到下一个访问限定符出现时为止4、class的默认访问权限为privatestruct为public(因为struct要兼容C)封装将数据和操作数据的方法进行有机结合隐藏对象的属性和实现细节仅对外公开接口来和对象进行交互。(可以理解为被封装起来的数据只能在类中直接访问在类外如果需要访问时需要借助类中已经写好的函数来进行操作)对上面的学生类进行封装代码示例如下12345678910111213classStudent{private:charname[12];intage;charsex[4];public:voidshow(){cout姓名nameendl;cout年龄ageendl;cout性别sexendl;}};5、C中类的作用域类定义了一个新的作用域类的所有成员都在类的作用域中。在类体外定义成员需要使用 :: 作用域解析符指明成员属于哪个类域。如果要在类外实现类中声明的方法要先进行::的操作声明属于哪一个类。代码示例如下123456789101112131415classStudent{private:charname[12];intage;charsex[4];public:voidshow()};voidStudent:: show{cout姓名nameendl;cout年龄ageendl;cout性别sexendl;}6、成员变量和方法在类中是如何存储的先来看一段代码123456789101112131415classStudent {private:charname[12];intage;charsex[4];public:voidshow();};intmain(){Student s1;coutsizeof(s1)endl;return0;}结果如图所示为什么会是二十哪show函数的存储不在类中吗正是如此一个类的大小实际就是该类中”成员变量”之和当然也要进行内存对齐注意空类的大小空类比较特殊编译器给了空类一个字节来唯一标识这个类。而类中的方法都被放到类外的同一块空间这样做是避免在实例化对象的时候放在方法的重复定义开辟不必要的内存空间造成空间浪费。

相关文章:

C语言类的基本语法详解

1、由C语言的结构体进入到C中的类我们在C语言中当需要定义多个变量的数据集合时,第一时间会想到使用结构体来进行定义,例如我们定义一个学生变量,包含姓名、年龄、性别等信息,代码示例如下:12345struct Student{char name[12];int…...

openGauss数据库的基本操作(增删改查....)

(1)创建用户:create user 用户名 with password "用户密码";(2)创建数据库:create database 数据库名 owner 用户名;(3)进入数据库:gsql -d 数据库名 -p 15400…...

从Inception到U-Net:特征融合的‘加’与‘拼’如何塑造了不同的AI模型?

从Inception到U-Net:特征融合的‘加’与‘拼’如何塑造了不同的AI模型? 在深度学习的演进历程中,特征融合方式的差异往往决定了模型的性能边界。2014年,当GoogleNet团队首次在Inception模块中引入**通道拼接(Concat&am…...

Oxy Forward中间件详解:如何实现高效的HTTP请求转发和头部重写

Oxy Forward中间件详解:如何实现高效的HTTP请求转发和头部重写 【免费下载链接】oxy Go middlewares for HTTP servers & proxies 项目地址: https://gitcode.com/gh_mirrors/ox/oxy Oxy Forward中间件是Go语言生态中一款强大的HTTP请求转发工具&#xf…...

LRC乐山无线电原装一级代理分销经销

品牌 元件类别 型号 描述 包装 数量 LRC 三极管 L8550QLT1G SOT-23 3000 9,000...

Flutter Launcher Icons配置模板详解:XML、HTML和图标资源生成原理

Flutter Launcher Icons配置模板详解:XML、HTML和图标资源生成原理 【免费下载链接】flutter_launcher_icons Flutter Launcher Icons - A package which simplifies the task of updating your Flutter apps launcher icon. Fully flexible, allowing you to choos…...

如何快速搭建docker-wechatbot-webhook:5分钟从零到实战

如何快速搭建docker-wechatbot-webhook:5分钟从零到实战 【免费下载链接】docker-wechatbot-webhook 轻量、可部署的微信机器人webhook服务,使用http接口收发微信消息, 用它作为个人通知、AIGC 应用或者 coze、n8n等自动化工作流的消息节点 项目地址: …...

使用Taotoken管理多项目API密钥并设置访问权限与审计

使用Taotoken管理多项目API密钥并设置访问权限与审计 1. 多项目密钥管理需求背景 在同时推进多个AI项目的开发过程中,不同环境对模型资源的需求往往存在差异。开发阶段可能需要频繁调用测试模型,而生产环境则要求稳定的商用模型服务。传统单一API Key的…...

如何让微信聊天记录成为你的数字记忆宝库?

如何让微信聊天记录成为你的数字记忆宝库? 【免费下载链接】WeChatMsg 提取微信聊天记录,将其导出成HTML、Word、CSV文档永久保存,对聊天记录进行分析生成年度聊天报告 项目地址: https://gitcode.com/GitHub_Trending/we/WeChatMsg 你…...

如何将Faust信号处理语言部署到嵌入式系统:ESP32、Teensy与Bela平台实战指南

如何将Faust信号处理语言部署到嵌入式系统:ESP32、Teensy与Bela平台实战指南 【免费下载链接】faust Functional programming language for signal processing and sound synthesis 项目地址: https://gitcode.com/gh_mirrors/fau/faust Faust(Fu…...

灾难恢复专家稀缺报告

一、灾难恢复专家稀缺现状:数字时代的隐形危机在2026年的科技版图中,软件测试行业正经历着前所未有的变革,而灾难恢复领域的人才荒,正成为悬在企业头顶的达摩克利斯之剑。数据显示,当前全球范围内灾难恢复专家的缺口已…...

网盘直链下载助手终极指南:八大网盘一键获取真实下载链接,告别限速烦恼

网盘直链下载助手终极指南:八大网盘一键获取真实下载链接,告别限速烦恼 【免费下载链接】Online-disk-direct-link-download-assistant 一个基于 JavaScript 的网盘文件下载地址获取工具。基于【网盘直链下载助手】修改 ,支持 百度网盘 / 阿里…...

终极Android滑动布局解决方案:ConsecutiveScrollerLayout让复杂界面丝滑如流

终极Android滑动布局解决方案:ConsecutiveScrollerLayout让复杂界面丝滑如流 【免费下载链接】ConsecutiveScroller ConsecutiveScrollerLayout是Android下支持多个滑动布局(RecyclerView、WebView、ScrollView等)和普通控件(TextView、ImageView、LinearLayou、自定…...

AI写论文看这里!4款AI论文写作工具,解决写期刊论文的难题!

实用AI论文写作工具推荐 你是否还在为如何撰写期刊论文、毕业论文或职称论文而困扰?在手动撰写时,面对海量的参考文献,简直像是在大海捞针,复杂的格式规范让人感到无从下手,反复的修改更是消耗了你的耐心,…...

vben-admin-thin-next错误处理机制:全局异常捕获和用户友好提示

vben-admin-thin-next错误处理机制:全局异常捕获和用户友好提示 【免费下载链接】vben-admin-thin-next vue-vben-admin-2.0 mini template.vue3,vite,typescript 项目地址: https://gitcode.com/gh_mirrors/vb/vben-admin-thin-next vben-admin-thin-next是…...

终极figlet.js社区贡献指南:从入门到精通的开源参与实践

终极figlet.js社区贡献指南:从入门到精通的开源参与实践 【免费下载链接】figlet.js A FIG Driver written in JavaScript which aims to fully implement the FIGfont spec. 项目地址: https://gitcode.com/gh_mirrors/fi/figlet.js figlet.js是一个用TypeS…...

awesome-cdk无密码认证:使用Cognito构建安全的登录系统

awesome-cdk无密码认证:使用Cognito构建安全的登录系统 【免费下载链接】awesome-cdk A collection of awesome things related to the AWS Cloud Development Kit (CDK) 项目地址: https://gitcode.com/gh_mirrors/aw/awesome-cdk 在当今数字化时代&#xf…...

awesome-cdk安全实践:5个关键步骤保护你的云基础设施

awesome-cdk安全实践:5个关键步骤保护你的云基础设施 【免费下载链接】awesome-cdk A collection of awesome things related to the AWS Cloud Development Kit (CDK) 项目地址: https://gitcode.com/gh_mirrors/aw/awesome-cdk AWS Cloud Development Kit …...

利用 Taotoken 实现多模型 API 的自动化测试与监控

利用 Taotoken 实现多模型 API 的自动化测试与监控 1. 多模型测试场景与 Taotoken 优势 在构建基于大模型的应用时,确保 API 的稳定性和性能至关重要。Taotoken 提供的统一接口允许开发者通过单一接入点调用多个模型,这为自动化测试和监控提供了便利。…...

Python可视化打包工具:Nuitka与Installer双引擎支持的GUI打包助手

温馨提示:文末有联系方式一、专业级Python可视化打包平台 告别命令行繁琐操作,本工具提供图形化交互界面,专为开发者与非专业用户设计,实现零门槛、高效率的Python项目打包全流程管理。二、双重打包引擎无缝集成 深度兼容Nuitka&a…...

哪个CMS最简单易用?四种常见网站管理系统横向对比

对于刚开始接触网站搭建的用户来说,“哪个CMS最简单易用”是一个高频问题。市面上有众多内容管理系统(CMS),各自定位不同,学习成本也相差很大。本文从新手角度出发,对比四类常见CMS的易用性,帮助…...

大型语言模型行为控制:激活空间旋转技术解析

1. 大型语言模型行为控制技术演进大型语言模型(LLM)的行为控制技术近年来经历了从外部约束到内部干预的范式转变。传统方法主要依赖强化学习人类反馈(RLHF)和宪法AI等外部训练手段,这些技术虽然有效但存在三个显著局限:首先,它们需要昂贵的模…...

通过Node.js后端服务接入Taotoken多模型API的完整示例

通过Node.js后端服务接入Taotoken多模型API的完整示例 1. 环境准备与密钥配置 在开始编写Node.js代码前,需要确保开发环境已安装Node.js 16或更高版本。推荐使用npm或yarn作为包管理工具。首先创建一个新项目目录并初始化: mkdir taotoken-node-demo …...

如何永久保存微信聊天记录:WeChatMsg完整指南与深度分析

如何永久保存微信聊天记录:WeChatMsg完整指南与深度分析 【免费下载链接】WeChatMsg 提取微信聊天记录,将其导出成HTML、Word、CSV文档永久保存,对聊天记录进行分析生成年度聊天报告 项目地址: https://gitcode.com/GitHub_Trending/we/WeC…...

Nature性能优化技巧:10个提升应用性能的实用方法

Nature性能优化技巧:10个提升应用性能的实用方法 【免费下载链接】nature The Nature Programming Language 项目地址: https://gitcode.com/gh_mirrors/na/nature Nature编程语言凭借其自动化内存管理和编译时静态分析等特性,为开发者提供了高效…...

3分钟掌握Adobe Illustrator批量替换技巧:ReplaceItems脚本完全指南

3分钟掌握Adobe Illustrator批量替换技巧:ReplaceItems脚本完全指南 【免费下载链接】illustrator-scripts Adobe Illustrator scripts 项目地址: https://gitcode.com/gh_mirrors/il/illustrator-scripts 还在为Adobe Illustrator中繁琐的重复替换工作而头疼…...

5个能让你从总监办公室笑着走出来的救命命令

每个开发者都经历过这种想死的崩溃瞬间。这时候,那些官方教程从未教过、资深工程师捂得死死的冷门命令,就是你唯一的救命稻草。本文精选5个真正能救命的Git冷命令,覆盖误删、错提交、远程失联、灾难性回滚四大崩溃场景,每一个都配…...

告别‘笨重’UNet:手把手教你用MALUNet在ISIC数据集上实现轻量级皮肤病变分割

轻量级医学影像分割实战:MALUNet在皮肤病变识别中的高效应用 医学影像分析领域正经历一场从"重量"到"重效"的范式转变。当大多数研究者还在追逐更高精度的复杂模型时,一支新兴力量正在用1/44的参数量实现同等甚至更优的分割效果——…...

二维码修复神器QrazyBox:拯救损坏二维码的终极指南

二维码修复神器QrazyBox:拯救损坏二维码的终极指南 【免费下载链接】qrazybox QR Code Analysis and Recovery Toolkit 项目地址: https://gitcode.com/gh_mirrors/qr/qrazybox 核心关键词:二维码修复工具、QR码恢复软件、损坏二维码解码、在线二…...

ReplaceItems.jsx:Adobe Illustrator设计师必备的批量对象替换神器,5分钟学会工作效率翻倍!

ReplaceItems.jsx:Adobe Illustrator设计师必备的批量对象替换神器,5分钟学会工作效率翻倍! 【免费下载链接】illustrator-scripts Adobe Illustrator scripts 项目地址: https://gitcode.com/gh_mirrors/il/illustrator-scripts 还在…...