【带头学C++】----- 八、C++面向对象编程 ---- 8.5 struct结构体类型增强使用说明

news2024/11/23 16:59:29

目录

 8.5 struct结构体类型增强使用说明

8.5.1 C++结构体可以定义成员函数

8.5.2 c++中定义结构体变量可以不加struct关键字

8.6 bool布尔类型关键字


 8.5 struct结构体类型增强使用说明

     第六章对结构体的使用、内存对齐以及数组、深拷贝和浅拷贝进行了一个详细的说明,(复习请点击这里跳转到第六章。)

     C语言中定义结构体变量需要加上strut关键字,C++不需要。C语言中的结构体只能定义成员变量,不能定义成员函数。C++即可以定义成员变量,也可以定义成员函数。

8.5.1 C++结构体可以定义成员函数

struct student {
    std::string mName;
    int mAge;

    void setName(std::string name) {
        mName = name;
    }

    void setAge(int age) {
        mAge = age;
    }

    void showStudent() {
        cout << "Name: " << mName.c_str() << " Age: " << mAge << endl;
    }
};

注:

1.添加#include <string> 引入string文件库

2.string类型在使用cout的时候,需要使用  " .c_str() " 转换成c语言string风格,C++可以不加头文件直接输出char字符类型。

  1. 类型:std::string 是一个类类型,属于标准 C++ 库中的类,用于包装和操作字符串。而 char 是字符类型,可以表示单个字符。

  2. 复杂性:std::string 提供了许多成员函数和操作符重载,使得对字符串的操作和处理更加方便和灵活。它支持动态修改字符串的长度、连接、查找、比较等操作。而 char 只能表示一个字符,没有内置的字符串操作功能。

  3. 存储方式:std::string 内部使用动态分配的内存来存储字符串,可以动态调整字符串的长度。而 char 只能使用字符数组或指针的形式来存储字符串,长度固定。

  4. 字符串表示:std::string 使用明确的字符串结尾标志来表示字符串的结束,不需要通过计数器或特定字符来表示字符串的长度或结尾。而 char 字符串通常使用以 null 字符 ('\0') 结尾的字符数组表示字符串的结束。

     总的来说,std::string 提供了更多的功能和便利性,能够更方便地处理和操作字符串。而 char 则更适合用于表示单个字符或简单的字符操作。在 C++ 中,std::string 更推荐使用,除非你有特定需要或与 C 语言进行交互。

8.5.2 c++中定义结构体变量可以不加struct关键字

8.6 bool布尔类型关键字

bool 是用于表示布尔类型的关键字,它只有两个可能的值:true 和 false

布尔类型代表了逻辑的真和假,用于处理条件和判断。在条件语句(例如 if 语句和循环语句)中,你可以使用布尔类型进行判断并根据判断结果执行不同的代码块。

在 C++ 中,你可以使用 bool 类型来声明变量,并进行布尔值的存储和计算。例如:

bool isValid = true;
bool isHappy = false;

在上述例子中,isValid 的值是 true(真,类似1,有,对的,是真的)isHappy 的值是 false(假,类似0,无,是假的,不对的) 实际上就是真或假、有或无、是非对错的关系。

还可以使用逻辑运算符(例如 &&|| 和 !)来进行布尔值的操作。例如:

bool result1 = true && false;  // false
bool result2 = true || false;  // true
bool result3 = !true;         // false

在上述例子中,&& 表示逻辑与操作,当所有操作数都为 true 时,结果为 true,否则结果为 false|| 表示逻辑或操作,当至少一个操作数为 true 时,结果为 true,否则结果为 false! 表示逻辑非操作,它会取反操作数的值。

bool类型占1个字节大小,因为只表示一个0或者1。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

统信UOS_麒麟KYLINOS上使用远程SSH连接的工具electerm

原文链接&#xff1a;统信UOS/麒麟KYLINOS上使用SSH工具electerm Hello&#xff0c;大家好啊&#xff01;在我们日常的工作和学习中&#xff0c;远程控制和管理服务器已经成为一项常见且必要的技能。尤其是对于IT专业人士和开发者来说&#xff0c;一个高效、稳定的远程SSH连接工…

智能AI系统ChatGPT网站系统源码+Midjourney绘画+支持DALL-E3文生图,支持最新GPT-4-Turbo模型

一、AI创作系统 SparkAi创作系统是基于ChatGPT进行开发的Ai智能问答系统和Midjourney绘画系统&#xff0c;支持OpenAI-GPT全模型国内AI全模型。本期针对源码系统整体测试下来非常完美&#xff0c;可以说SparkAi是目前国内一款的ChatGPT对接OpenAI软件系统。那么如何搭建部署AI…

漏洞扫描-德迅云安全漏洞扫描服务

漏洞扫描是指基于漏洞数据库&#xff0c;通过扫描等手段对指定的远程或者本地计算机系统的安全脆弱性进行检测&#xff0c;发现可利用漏洞的一种安全检测的行为。 漏洞扫描的主要目的是发现系统、网络或应用程序中可能存在的安全漏洞和缺陷&#xff0c;以便及时修复这些漏洞和缺…

基于STM32单片机的智能家居系统设计(论文+源码)

1.系统设计 基于STM32单片机的智能家居系统设计与实现的具体任务&#xff1a; &#xff08;1&#xff09;可以实现风扇、窗帘、空调、灯光的开关控制&#xff1b; &#xff08;2&#xff09;具有语音识别功能&#xff0c;可以通过语音控制家电&#xff1b; &#xff08;3&a…

Pytorch:torch.utils.data.DataLoader()

如果读者正在从事深度学习的项目&#xff0c;通常大部分时间都花在了处理数据上&#xff0c;而不是神经网络上。因为数据就像是网络的燃料&#xff1a;它越合适&#xff0c;结果就越快、越准确&#xff01;神经网络表现不佳的主要原因之一可能是由于数据不佳或理解不足。因此&a…

【人工智能】人工智能的技术研究与安全问题的深入讨论

前言 人工智能&#xff08;Artificial Intelligence&#xff09;&#xff0c;英文缩写为AI。 它是研究、开发用于模拟、延伸和扩展人的智能的理论、方法、技术及应用系统的一门新的技术科学。人工智能是新一轮科技革命和产业变革的重要驱动力量。 &#x1f4d5;作者简介&#x…

vscode注释插件「koroFileHeader」

前言 在vscode上进行前端开发&#xff0c;有几个流行的注释插件&#xff1a; Better CommentsTodo TreekoroFileHeaderDocument ThisAuto Comment Blocks 在上面的插件中我选择 koroFileHeader 做推荐&#xff0c;原因一是使用人数比较多&#xff08;最多的是 Better Commen…

029 - STM32学习笔记 - ADC(三) 独立模式单通道DMA采集

029 - STM32学习笔记 - 单通道DMA采集&#xff08;三&#xff09; 单通道ADC采集在上节中学习完了&#xff0c;这节在上节的内容基础上&#xff0c;学习单通道DMA采集。程序代码以上节的为基础&#xff0c;需要删除NVIC配置函数、中段服务子程序、R_ADC_Mode_Config()函数中使能…

探索Python内置类属性__repr__:展示对象的魅力与实用性

概要 在Python中&#xff0c;每个对象都有一个内置的__repr__属性&#xff0c;它提供了对象的字符串表示形式。这个特殊的属性在调试、日志记录和交互式会话等场景中非常有用。本文将详细介绍__repr__属性的使用教程&#xff0c;包括定义、常见应用场景和注意事项&#xff0c;…

机器人向前冲

欢迎来到程序小院 机器人向前冲 玩法&#xff1a;一直走动的机器人&#xff0c;点击鼠标左键进行跳跃&#xff0c;跳过不同的匝道&#xff0c;掉下去即为游戏接续&#xff0c; 碰到匝道铁钉游戏结束&#xff0c;一直往前冲吧^^。开始游戏https://www.ormcc.com/play/gameStart…

C++基础 -10- 类的构造函数

类的构造函数类型一 使用this指针给类内参数赋值 class rlxy {public:int a;rlxy(int a, int b, int c){this->aa;this->bb;this->cc;cout << "rlxy" << endl;}protected:int b;private:int c; };int main() {rlxy ss(10, 20, 30); }类的构造…

使用Accelerate库在多GPU上进行LLM推理

大型语言模型(llm)已经彻底改变了自然语言处理领域。随着这些模型在规模和复杂性上的增长&#xff0c;推理的计算需求也显著增加。为了应对这一挑战利用多个gpu变得至关重要。 所以本文将在多个gpu上并行执行推理&#xff0c;主要包括&#xff1a;Accelerate库介绍&#xff0c;…

在Rust中处理命令行参数和环境变量

1.摘要 Rust的命令行和环境变量处理在标准库中提供了一整套实现方法, 在本文中除了探索标准库的使用方法之外, 也在不断适应Rust独有的语法特点。在本文中, 我们通过标准库函数的返回值熟悉了迭代器的使用方法, 操作迭代器精确控制保存的内容, 包括字符串和键值对的使用方法。…

SpringBoot整合EasyExcel实现复杂Excel表格的导入导出功能

文章目录 &#x1f389;SpringBoot整合EasyExcel实现复杂Excel表格的导入&导出功能 ☆* o(≧▽≦)o *☆嗨~我是IT陈寒&#x1f379;✨博客主页&#xff1a;IT陈寒的博客&#x1f388;该系列文章专栏&#xff1a;架构设计&#x1f4dc;其他专栏&#xff1a;Java学习路线 Jav…

mysql 性能排查

mysql 下常见遇到的问题有&#xff0c;mysql连接池耗尽&#xff0c;死锁、慢查、未提交的事务。等等我们可能需要看&#xff1b;我们想要查看的可能有 1.当前连接池连接了哪些客户端&#xff0c;进行了哪些操作 2.当前造成死锁的语句有哪些&#xff0c;是哪个客户端上的&#x…

2023网络安全产业图谱

1. 前言 2023年7月10日&#xff0c;嘶吼安全产业研究院联合国家网络安全产业园区&#xff08;通州园&#xff09;正式发布《嘶吼2023网络安全产业图谱》。 嘶吼安全产业研究院根据当前网络安全发展规划与趋势发布《嘶吼2023网络安全产业图谱》调研&#xff0c;旨在进一步了解…

2020年6月16日 Go生态洞察:泛型的下一步

&#x1f337;&#x1f341; 博主猫头虎&#xff08;&#x1f405;&#x1f43e;&#xff09;带您 Go to New World✨&#x1f341; &#x1f984; 博客首页——&#x1f405;&#x1f43e;猫头虎的博客&#x1f390; &#x1f433; 《面试题大全专栏》 &#x1f995; 文章图文…

选择跨网数据摆渡系统时,你最关注的功能是哪些?

为什么要选择跨网数据摆渡系统呢&#xff1f;因为做了网络隔离后&#xff0c;要有数据交互。那为什么要做网络隔离呢&#xff1f;主要还是安全方面的考虑&#xff0c;一般有以下几个原因&#xff1a; 1、数据安全保护&#xff1a;对于一些重要数据&#xff0c;比如代码数据、隐…

leetCode 39.组合总和 + 回溯算法 + 剪枝 + 图解 + 笔记

39. 组合总和 - 力扣&#xff08;LeetCode&#xff09; 给你一个 无重复元素 的整数数组 candidates 和一个目标整数 target &#xff0c;找出 candidates 中可以使数字和为目标数 target 的 所有 不同组合 &#xff0c;并以列表形式返回。你可以按 任意顺序 返回这些组合 can…

IDEA 配置 gradle6.8.3 解决导入gradle项目下载太慢问题

由于平时用的是springboot 2.7 这里下载gradle-6.8.3 Gradle官网地址&#xff1a;https://services.gradle.org/distributions/ 1.下载gradle后&#xff0c;配置环境变量 GRADLE_HOME {gradle 文件路径} GRADLE_USER_HOME {jar下载路径&#xff0c;可以放maven jar保存路径…