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

C++中类的声明

C++中类的声明

假设您要编写一个模拟人(如您自己)的程序。人有其特征:姓名、出生日期、出生地和性别(这些信息让每个人都是独一无二的),还能做某些事情,如交谈、自我介绍等。

要在程序中模拟人,需要一个结构,将定义人的属性(数据)以及人可使用这些属性执行的操作(函数)整合在一起。这种结构就是类。

要声明类,可使用关键字 class,并在它后面依次包含类名,一组放在{}内的成员属性和成员函数,以及结尾的分号。

class 类名;

我们可以仅仅声明类而暂时不定义它,这种声明被称为前向声明。在它声明之后定义之前该类是个不完全类型。

不完全类型只能在非常有限的情况下使用:可以定义指向这种类型的指针或引用,也可以作为一个已经声明(但没有定义)的函数的参数或返回类型。

对于一个类来说,在创建它的对象前必须首先完成类的定义,而不能仅仅被声明。否则编译器就无法了解这样的对象需要多少存储空间。类似的,类也必须首先被定义,然后才能用引用或者指针访问其成员。

对于类的静态成员,直到类被定义之后数据成员才能被声明成这种类类型。我们必须首先完成类的定义,然后编译器才能知道存储该数据成员需要多少空间。因为只有当类全部完成后类才算被定义,所以一个类的成员类型不能是该类自己。然而,一旦一个类的名字出现后,它就被认为是声明过了(但尚未定义),因此类允许包含指向它自身类型的引用或指针。
类声明将类本身及其属性告诉编译器。类声明本身并不能改变程序的行为,必须要使用类,就像需要调用函数一样。
模拟人类的类类似于下面这样(请暂时不要考虑其中的语法):

class Human
{// Member attributes:string name;string dateOfBirth;string placeOfBirth;string gender;// Member functions:void Talk(string textToTalk);void IntroduceSelf();...
};

不用说,IntroduceSelf() 将使用 Talk() 以及封装在类 Human 中的一些数据。通过关键字 class, C++ 提供了一种功能强大的方式,让您能够创建自己的数据类型,并在其中封装属性和使用它们的函数。
类的所有属性(这里是 name、 dateOfBirth、 placeOfBirth 和 gender)以及在其中声明的函数(Talk()IntroduceSelf( ))都是类(Human)的成员。
封装指的是将数据以及使用它们的函数进行逻辑编组,这是面向对象编程的重要特征。

该文章会更新,欢迎大家批评指正。

推荐一个零声学院的C++服务器开发课程,个人觉得老师讲得不错,
分享给大家:Linux,Nginx,ZeroMQ,MySQL,Redis,
fastdfs,MongoDB,ZK,流媒体,CDN,P2P,K8S,Docker,
TCP/IP,协程,DPDK等技术内容
点击立即学习:C/C++后台高级服务器课程

相关文章:

C++中类的声明

C中类的声明 假设您要编写一个模拟人(如您自己)的程序。人有其特征:姓名、出生日期、出生地和性别(这些信息让每个人都是独一无二的),还能做某些事情,如交谈、自我介绍等。 要在程序中模拟人&…...

IDEA常用AI插件

只推荐免费的 一、对话式AI 1. ChatGPT GPT-4 - Bito AI Code Assistant ChatGPT GPT-4 - Bito AI Code Assistant 插件地址:https://plugins.jetbrains.com/plugin/18289-chatgpt-gpt-4–bito-ai-code-assistant支持自定义prompt支持解释代码支持生成代码注释支持…...

【LeetCode】每日一题最后一个单词的长度投票法求解多数元素异或操作符巧解只出现一次的数字整数反转

个人主页直达:小白不是程序媛 LeetCode系列专栏:LeetCode刷题掉发记 目录 LeetCode 58.最后一个单词的长度 LeetCode169.多数元素 LeetCode 136.出现一次的数字 LeetCode 7.整数反转 LeetCode 58.最后一个单词的长度 难度:简单 OJ链接…...

自然语言处理---注意力机制

注意力概念 观察事物时,之所以能够快速判断一种事物(当然允许判断是错误的),是因为大脑能够很快把注意力放在事物最具有辨识度的部分从而作出判断,而并非是从头到尾的观察一遍事物后,才能有判断结果。正是基于这样的理论&#xf…...

目标检测YOLO实战应用案例100讲-基于改进YOLO v7的智能振动分拣系统开发(续)

目录 3.2 引入EIOU损失函数 3.2.1 CIOU损失函数 3.3.2 基于Focal-EIOU损失函数的网络优化 ​编辑...

Ubuntu - 用户和权限

sudo sudo(Super User Do)是在Linux和Unix系统中用于执行具有超级用户(root)权限的命令的命令。它允许普通用户以特权身份运行特定命令,通常需要输入密码以确认其身份。 sudo 是一种安全的方式,用于限制哪…...

JAVA实现Jfilechooser搜索功能

JAVA实现Jfilechooser搜索功能 背景介绍需求描述思路和方法Java代码实现和注释相关知识点介绍视频演示结语 背景介绍 Java是一种面向对象的编程语言,广泛应用于各种应用程序开发中。文件搜索是我们在日常工作或者学习中经常会遇到的需求,比如查找某个文…...

​iOS上架App Store的全攻略

第一步:申请开发者账号 在开始将应用上架到App Store之前,你需要申请一个开发者账号。 1.1 打开苹果开发者中心网站:Apple Developer 1.2 使用Apple ID和密码登录(如果没有账号则需要注册),要确保使用与公…...

线性代数3:矢量方程

一、前言 欢迎回到系列文章的第三篇文章,内容是线性代数的基础知识,线性代数是机器学习背后的基础数学。在我之前的文章中,我介绍了梯队矩阵形式。本文将介绍向量、跨度和线性组合,并将这些新想法与我们已经学到的内容联系起来。本…...

线性代数的本质笔记

课程来自b站发现的《线性代数的本质》,可以帮助从直觉层面理解线性代数的一些基础概念,以及把一些看似不同的数学概念解释之后,发现其实有内在的关联。 这里只对部分内容做一个记录,完整内容请自行观看视频~ 01-向量究竟是什么 …...

[SQL | MyBatis] MyBatis 简介

目录 一、MyBatis 简介 1、MyBatis 简介 2、工作流程 二、入门案例 1、准备工作 2、示例 三、Mapper 代理开发 1、问题简介 2、工作流程 3、注意事项 4、测试 四、核心配置文件 mybatis-config.xml 1、environment 2、typeAilases 五、基于 xml 的查询操作 1、…...

FreeRTOS介绍 和 将FreeRTOS移植到STM32F103C8T6

一、FreeRTOS 介绍 什么是 FreeRTOS ? Free即免费的,RTOS的全称是Real time operating system,中文就是实时操作系统。 注意:RTOS不是指某一个确定的系统,而是指一类操作系统。比如:uc/OS,Fr…...

zookeeper(目前只有安装)

安装 流程 学kafka的时候安装 Apache ZooKeeper 安装地址:https://archive.apache.org/dist/zookeeper/zookeeper-3.5.7/apache-zookeeper-3.5.7-bin.tar.gz 解压 tar -zxvf kafka_2.12-3.0.0.tgz -C /export/server/ 改配置 cd config cp zoo_sample.cfg z…...

点云cloudpoint生成octomap的OcTree的两种方法以及rviz可视化

第一种:在自己的项目中将点云通过ros的topic发布,用octomap_server订阅点云消息,在octomap_server中生成ocTree 再用rviz进行可视化。 创建工作空间,记得source mkdir temp_ocotmap_test/src cd temp_ocotmap_test catkin_make…...

Python---死循环概念---while True

在编程中一个靠自身控制无法终止的程序称为“死循环”。 在Python中,我们也可以使用while True来模拟死循环: 代码: while True: print(每天进步一点点) 图示 应用: 比如,在测试里面,自动化测试用例…...

ElasticSearch容器化从0到1实践(问题汇总)

文章目录 ik插件如何安装?6.8.0版本JVM参数调整 ik插件如何安装? ik插件(中文分词插件)无法直接通过install指定插件名称的方式进行安装,可以通过指定zip包的方式对插件进行安装,需要注意的是通过zip包方式…...

01、Python 安装 ,Pycharm 安装

目录 安装安装 Python安装 Pycharm 创建项目简单添加文件运行 简单爬取下载小视频 安装 python-3.8.10-amd64.exe – 先安装这个 pycharm-community-2022.2.exe 再安装这个 安装 Python python-3.8.10-amd64.exe 安装(这个是其他版本的安装,步骤一样…...

从输入URL到展示出页面

目录 了解URL 1. 输入URL 2. 域名解析 3. 建立连接 4. 服务器处理请求: 5. 返回响应: 6. 浏览器解析HTML: 7. 加载资源: 8. 渲染页面: 9. 执行JavaScript: 10. 页面展示: 从输入URL到…...

【C++】哈希的应用 -- 位图

文章目录 一、位图的概念二、位图的实现三、库中的 bitset四、位图的应用五、哈希切割 一、位图的概念 我们以一道面试题来引入位图的概念: 给40亿个不重复的无符号整数,没排过序。给一个无符号整数,如何快速判断一个数是否在这40亿个数中 我…...

系列二、IO流原理及流的分类

一、概述 IO是Input、Output的缩写,IO流技术是非常实用的技术,用于处理数据传输,例如读写文件,网络通讯等。在Java程序中,对于数据的输入/输出操作以"流(stream)"的方式进行&#xff…...

5G PUSCH DMRS配置实战:从MATLAB 5G Toolbox函数nrPUSCHDMRS到Type A/B映射选择

5G PUSCH DMRS配置实战:从MATLAB 5G Toolbox函数nrPUSCHDMRS到Type A/B映射选择 在5G上行链路物理层开发中,解调参考信号(DMRS)的配置直接影响信道估计精度和系统性能。MATLAB 5G Toolbox提供的nrPUSCHDMRS函数封装了3GPP标准中的…...

深入AudioService:从Java到Native,图解Android音频录制/播放监控的完整链路

深入AudioService:从Java到Native,图解Android音频录制/播放监控的完整链路 在移动应用开发中,音频功能的实现往往涉及复杂的系统级交互。当用户插入耳机、切换蓝牙设备或同时运行多个录音应用时,Android系统如何确保音频事件准确…...

大模型微调面试100问,非常详细收藏我这一篇就好了!

本文系统梳理了LoRA权重更新梯度反向传播公式推导,解释了固定只训练和能显著减少显存占用的原因。深入解析了QLoRA中NF4量化原理及其利用高斯分布优化量化区间的机制。详细阐述了Double Quantization在QLoRA中的实现步骤及其显存节省效果。推导了DPO损失函数从RLHF目…...

告别裸机轮询!用STM32中断优雅处理阿里云命令下发,并实现设备状态同步上报

STM32与阿里云物联网平台的高效通信架构设计:从命令下达到状态同步的闭环实现 在物联网设备开发中,实现云端与设备的双向可靠通信是一个看似简单却暗藏诸多技术挑战的课题。许多开发者往往止步于基础功能的实现,却忽视了通信架构的健壮性和系…...

Python argparse实战:5分钟教你为自动化脚本添加可配置参数(比如定时备份、文件处理)

Python argparse实战:5分钟为自动化脚本添加可配置参数 每次修改脚本里的硬编码路径时,我都忍不住想:要是能像Linux命令那样通过参数动态配置该多好。上周维护服务器时,一个简单的日志清理脚本因为目录变更被迫改了三次代码——这…...

【成都信息工程大学主办 | 多主题征稿,涵盖深度学习、强化学习、自然语言处理等 | IEEE (CPS)出版,EI稳定检索】2026年人工智能与数据挖掘国际学术会议(AIDM 2026)

多主题征稿 | EI稳定检索 2026年人工智能与数据挖掘国际学术会议(AIDM 2026) 2026 International Conference on Artificial Intelligence and Data Mining 大会官网:www.ic-aidm.org【论文投稿】 截稿时间:见官网 大会时间…...

Kubernetes Pod安全实战:别再让容器用root乱跑了,手把手教你配置SecurityContext的runAsUser

Kubernetes安全实践:彻底告别容器root权限的5种防御策略 凌晨三点,某电商平台的数据库突然被清空。调查发现,攻击者通过一个以root权限运行的Redis容器,利用挂载的宿主目录权限漏洞植入了挖矿程序。这不是虚构情节——2022年CNCF安…...

5个高级技巧:在React应用中构建专业级JSON编辑器

5个高级技巧:在React应用中构建专业级JSON编辑器 【免费下载链接】jsoneditor-react react wrapper implementation for https://github.com/josdejong/jsoneditor 项目地址: https://gitcode.com/gh_mirrors/js/jsoneditor-react JSONEditor-React是一个基于…...

通义实验室推出 Fun-ASR1.5:方言工业级可用,多语言识别能力大幅提升!

通义实验室正式推出 Fun-ASR1.5 语音识别大模型,实现「方言工业级可用」,单模型覆盖 30 种语言及多种方言,典型方言场景字错误率大幅下降。多语言与方言覆盖Fun-ASR1.5 基于统一大模型架构,能无缝覆盖 30 种语言、汉语七大方言体系…...

如何在Discord上实时展示你的音乐品味:NetEase-Cloud-Music-DiscordRPC完整指南

如何在Discord上实时展示你的音乐品味:NetEase-Cloud-Music-DiscordRPC完整指南 【免费下载链接】NetEase-Cloud-Music-DiscordRPC 在Discord上显示网抑云/QQ音乐. Enables Discord Rich Presence For Netease Cloud Music/Tencent QQ Music. 项目地址: https://…...