初识 C++ ( 1 )

news2024/11/15 19:31:36

引言:大家都说c++是c的升级语言。我不懂这句话的含义后来看过解释才懂。

        

一、面向过程语言和面向对象语言
我们都知道C语言是面向过程语言,而C++是面向对象语言,说C和C++的区别,也就是在比较面向过程和面向对象的区别。

1.面向过程和面向对象的区别
(1)面向过程:面向过程编程就是分析出解决问题的步骤,然后把这些步骤一步一步的实现,使用的时候一个一个的依次调用就可以了。
(2)面向对象:面向对象编程就是把问题分解成各个对象,建立对象的目的不是为了完成一个步骤,而是为了描述某个事物在整个解决问题的步骤中的行为。

基于上述的例子,二者的优劣总结如下:

面向过程语言
优点:性能比面向对象高,因为类调用时需要实例化,开销比较大,比较消耗资源;比如单片机、嵌入式开发、 Linux/Unix等一般采用面向过程开发,性能是最重要的因素。
缺点:没有面向对象易维护、易复用、易扩展

面向对象语言:
优点:易维护、易复用、易扩展,由于面向对象有封装、继承、多态性的特性,可以设计出低耦合的系统,使系统 更加灵活、更加易于维护
缺点:性能比面向过程低


具体内容参考下面的文章
原文链接:https://blog.csdn.net/cherrydreamsover/article/details/81835976

文章目录

目录

文章目录

前言

一、认识namespace

namespace的定义

• 定义命名空间,需要使⽤到namespace关键字,后⾯跟命名空间的名字,然后接⼀对{}即可,{}中 即为命名空间的成员。命名空间中可以定义变量/函数/类型等。

• namespace本质是定义出⼀个域,这个域跟全局域各⾃独⽴,不同的域可以定义同名变量,所以下 ⾯的rand不在冲突了。

• C++中域有函数局部域,全局域,命名空间域,类域;域影响的是编译时语法查找⼀个变量/函数/ 类型出处(声明或定义)的逻辑,所有有了域隔离,名字冲突就解决了。局部域和全局域除了会影响 编译查找逻辑,还会影响变量的⽣命周期,命名空间域和类域不影响变量⽣命周期。 

• namespace只能定义在全局,当然他还可以嵌套定义。

• 项⽬⼯程中多⽂件中定义的同名namespace会认为是⼀个namespace,不会冲突。

• C++标准库都放在⼀个叫std(standard)的命名空间中。

二、namespace的使用

1.代码演示

​编辑

当然我们还可以嵌套使用:

2.  ::符号的使用

3.C++输⼊&输出

• 是InputOutputStream的缩写,是标准的输⼊、输出流库,定义了标准的输⼊、输 出对象。

• std::cin 是istream类的对象,它主要⾯向窄字符(narrowcharacters(oftypechar))的标准输 ⼊流。

• std::cout 是ostream类的对象,它主要⾯向窄字符的标准输出流。

• std::endl 是⼀个函数,流插⼊输出时,相当于插⼊⼀个换⾏字符加刷新缓冲区。

• >是流提取运算符。(C语⾔还⽤这两个运算符做位运算左移/右移)

• 使⽤C++输⼊输出更⽅便,不需要像printf/scanf输⼊输出时那样,需要⼿动指定格式,C++的输⼊ 输出可以⾃动识别变量类型(本质是通过函数重载实现的,这个以后会讲到),其实最重要的是 C++的流能更好的⽀持⾃定义类型对象的输⼊输出。、

• IO流涉及类和对象,运算符重载、继承等很多⾯向对象的知识,这些知识我们还没有讲解,所以这 ⾥我们只能简单认识⼀下C++IO流的⽤法,后⾯我们会有专⻔的⼀个章节来细节IO流库。

• cout/cin/endl等都属于C++标准库,C++标准库都放在⼀个叫std(standard)的命名空间中,所以要 通过命名空间的使⽤⽅式去⽤他们。

• ⼀般⽇常练习中我们可以usingnamespacestd,实际项⽬开发中不建议usingnamespacestd。 • 这⾥我们没有包含,也可以使⽤printf和scanf,在包含间接包含了。vs系列 编译器是这样的,其他编译器可能会报错。

总结


  • 前言
  • 一、pandas是什么?
  • 二、使用步骤
    • 1.引入库
    • 2.读入数据
  • 总结


前言

c++的学习总的来说是远远大于c语言的(当然我现在不知道,因为我也没学到。请谅解一下,谢谢大家)但是我们不能认为他很难因为会有畏难心理。遇到问题我们一点一带分析总会解决的。


提示:以下是本篇文章正文内容,下面案例可供参考

一、认识namespace

在c语言中我们定义变量定义函数,在很多的情况下难免遇见命名重复。为了避免出现这种情况,在c++中出现了namespace。

namespace的定义

• 定义命名空间,需要使⽤到namespace关键字,后⾯跟命名空间的名字,然后接⼀对{}即可,{}中 即为命名空间的成员。命名空间中可以定义变量/函数/类型等。

• namespace本质是定义出⼀个域,这个域跟全局域各⾃独⽴,不同的域可以定义同名变量,所以下 ⾯的rand不在冲突了。

• C++中域有函数局部域,全局域,命名空间域,类域;域影响的是编译时语法查找⼀个变量/函数/ 类型出处(声明或定义)的逻辑,所有有了域隔离,名字冲突就解决了。局部域和全局域除了会影响 编译查找逻辑,还会影响变量的⽣命周期,命名空间域和类域不影响变量⽣命周期。 

• namespace只能定义在全局,当然他还可以嵌套定义。

• 项⽬⼯程中多⽂件中定义的同名namespace会认为是⼀个namespace,不会冲突。

• C++标准库都放在⼀个叫std(standard)的命名空间中。

二、namespace的使用

1.代码演示

图片显示代码是不能正常运行的。因为在头文件中rand是函数,所以当我们定义赋值时运行报错。

但是在c++中我们就可以自己定义一个空间然后在里面定义

当然我们还可以嵌套使用:

2.  ::符号的使用

命名空间使⽤ 编译查找⼀个变量的声明/定义时,默认只会在局部或者全局查找,不会到命名空间⾥⾯去查找。所以 下⾯程序会编译报错。所以我们要使⽤命名空间中定义的变量/函数,有三种⽅式:

• 指定命名空间访问,项⽬中推荐这种⽅式。

• using将命名空间中某个成员展开,项⽬中经常访问的不存在冲突的成员推荐这种⽅式。

• 展开命名空间中全部成员,项⽬不推荐,冲突⻛险很⼤,⽇常⼩练习程序为了⽅便推荐使⽤。

3.C++输⼊&输出

• 是InputOutputStream的缩写,是标准的输⼊、输出流库,定义了标准的输⼊、输 出对象。

• std::cin 是istream类的对象,它主要⾯向窄字符(narrowcharacters(oftypechar))的标准输 ⼊流。

• std::cout 是ostream类的对象,它主要⾯向窄字符的标准输出流。

• std::endl 是⼀个函数,流插⼊输出时,相当于插⼊⼀个换⾏字符加刷新缓冲区。

• >是流提取运算符。(C语⾔还⽤这两个运算符做位运算左移/右移)

• 使⽤C++输⼊输出更⽅便,不需要像printf/scanf输⼊输出时那样,需要⼿动指定格式,C++的输⼊ 输出可以⾃动识别变量类型(本质是通过函数重载实现的,这个以后会讲到),其实最重要的是 C++的流能更好的⽀持⾃定义类型对象的输⼊输出。、

• IO流涉及类和对象,运算符重载、继承等很多⾯向对象的知识,这些知识我们还没有讲解,所以这 ⾥我们只能简单认识⼀下C++IO流的⽤法,后⾯我们会有专⻔的⼀个章节来细节IO流库。

• cout/cin/endl等都属于C++标准库,C++标准库都放在⼀个叫std(standard)的命名空间中,所以要 通过命名空间的使⽤⽅式去⽤他们。

• ⼀般⽇常练习中我们可以usingnamespacestd,实际项⽬开发中不建议usingnamespacestd。 • 这⾥我们没有包含,也可以使⽤printf和scanf,在包含间接包含了。vs系列 编译器是这样的,其他编译器可能会报错。


总结

在我看看来c++前期就是对c语言的不足的补充,方便c/c++的混合使用。当然这也是一个语言的初始学习。

谢谢大家的观看

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

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

相关文章

自然语言处理实战项目:从理论到实现

一、引言 自然语言处理(NLP)是计算机科学、人工智能和语言学交叉的领域,旨在让计算机能够理解、处理和生成人类语言。随着互联网的飞速发展,大量的文本数据被产生,这为自然语言处理技术的发展提供了丰富的素材&#xf…

【动态规划】(五)动态规划——子序列问题

动态规划——子序列问题 子序列问题☆ 最长递增子序列(离散)最长连续递增序列(连续)最大子序和(连续)最长重复子数组(连续)☆ 最长公共子序列(离散-编辑距离过渡&#xf…

【驱动】修改USB转串口设备的属性,如:Serial

1、查看串口信息 在Windows上,设备管理窗口中查看设备号 2、修改串口号工具 例如使用:CH34xSerCfg.exe 使用步骤:恢复默认值 - -> 修改 Serial String(或者Product String等属性)–> 写入配置 3、查看设备节点 在linux上使用lsub查看新增的设备信息,如下这个…

python多线程开发的具体示例

用一个具体的示例,展示如何使用 ThreadPoolExecutor 和 asyncio 来并行运行多个任务,并输出结果。 代码: import asyncio import time from concurrent.futures import ThreadPoolExecutorclass WorkJob:def __init__(self, job_id):self.j…

报表做着太费劲?为你介绍四款好用的免费报表工具

1. 山海鲸可视化 介绍: 山海鲸可视化是一款免费的国产可视化报表软件,与许多其他宣传免费的软件不同,山海鲸的报表功能完全免费并且没有任何限制,就连网站管理后台这个功能也是免费的。同时山海鲸可视化还提供了种类丰富的可视化…

11.安卓逆向-安卓开发基础-api服务接口设计2

免责声明:内容仅供学习参考,请合法利用知识,禁止进行违法犯罪活动! 内容参考于:图灵Python学院 本人写的内容纯属胡编乱造,全都是合成造假,仅仅只是为了娱乐,请不要盲目相信。 工…

云手机推荐:五款热门云手机测评!

在云手机市场中,各个品牌层出不穷,让人难以选择。为了帮助你更好地找到适合的云手机应用,我们整理了五款最受欢迎的云手机进行测评。2024年,哪款云手机是你的不二之选?且慢下结论,看看这五款云手机的真实表…

【深度学习】深度卷积神经网络(AlexNet)

在 LeNet 提出后,卷积神经网络在计算机视觉和机器学习领域中很有名气,但并未起到主导作用。 这是因为 LeNet 在更大、更真实的数据集上训练的性能和可行性还有待研究。 事实上,在 20 世纪 90 年代到 2012 年之间的大部分时间里,…

Windows系统的Tomcat日志路径配置

文章目录 引言I Windows系统的Tomcat日志路径配置配置常规日志路径访问日志路径配置,修改server.xmlII 日志文件切割:以分隔割tomcat 的 catalina.out 文件为例子通过Linux系统自带的切割工具logrotate来进行切割引言 需求:C盘空间不足,处理日志文件,tomcat日志迁移到D盘…

中国科学院云南天文台博士招生目录

中国科学院云南天文台是专业基础研究与应用研究结合的综合性天文研究机构(其前身是1938年中央研究院天文研究所在昆明东郊凤凰山创建的凤凰山天文台),总部在云南省昆明市,设有两个观测站(丽江高美古天文观测站和澄江抚…

Boruta 的库的初识

我在一个kaggle比赛时间预测中发现Boruta我并不熟悉与是我学习了一下 Boruta 的工作原理: 影子特征(Shadow Features): Boruta 首先创建一组影子特征,这些影子特征是通过随机打乱原始特征的值生成的。影子特征的目的是作为对照组…

【完结】【PCL实现点云分割】ROS深度相机实践指南(下):pcl::BoundaryEstimation实现3D点云轮廓检测的原理(论文解读)和代码实现

前言 本教程使用PCL对ROS深度相机捕获到的画面进行操场上锥桶的分割 上:[csdn 博客] 【PCL实现点云分割】ROS深度相机实践指南(上):PCL库初识和ROS-PCL数据类型转换中:[csdn 博客] 【PCL实现点云分割】ROS深度相机实践指南(中):Pl…

电梯节能 引领趋势

电梯,之前对我们来说,就是让我们省时省力的工具,谁知电梯也可加装【节能设备】。 电梯节能评估,节电率达20%-50%。 电梯节能(电梯回馈装置)通常电梯在轻载上行,重载下行和平层停梯状态下&#…

监控和维护 Linux 系统的健康状态:从服务启动故障到操作系统查询

个人名片 🎓作者简介:java领域优质创作者 🌐个人主页:码农阿豪 📞工作室:新空间代码工作室(提供各种软件服务) 💌个人邮箱:[2435024119qq.com] &#x1f4f1…

rar文件怎么打开?这几款软件压缩和查看很方便!

在这个数字化信息爆炸的时代,我们每天都会接触到各种各样的文件,其中RAR格式文件以其高压缩率和良好的文件保护特性,成为了许多人分享和存储大文件的首选。然而,面对这样一个看似“神秘”的文件格式,不少朋友可能会感到…

Stable Diffusion绘画 | 来训练属于自己的模型:配置完成,炼丹启动

前言 效率设置-优化器 优化器可以分为4类: 第一类 AdamW :梯度下降算法,结合自适应学习率,既可以快速收敛,又可以避免 Loss值 震荡 AdamW8bit:能降低显存占用,并略微加快训练速度&#xff0…

Mysql—主从复制的slave添加及延迟回放

MySQL 主从复制是什么? ​ MySQL 主从复制是指数据可以从一个 MySQL 数据库服务器主节点复制到一个或多个从节点。MySQL 默认采用异步复制方式,这样从节点不用一直访问主服务器来更新自己的数据,数据的更新可以在远程连接上进行,…

国产分布式数据库-tidb单机部署文档

tidb单机部署文档 1、创建用户 #创建用户 useradd tidb #设置密码 passwd tidb2、配置免密码登录 编辑/etc/sudoers文件,文末加入: tidb ALL(ALL) NOPASSWD:ALL如果想要控制某个用户(或某个组用户)只能执行root权限中的一部分命令, 或者允许某些用户使用sudo时…

充电桩设备升级扩展多段计费

一 项目背景 某省某市的一个充电桩项目近日收到业主需求,需在国庆节增加一个时间段(深谷计费段),但充电桩设备仅支持4段(尖时段,峰时段,平时段,谷时段),今…

【CoppeliaSim V4.7】The Python interpreter could not handle the wrapper script

[sandboxScript:error] The Python interpreter could not handle the wrapper script (or communication between the launched subprocess and CoppeliaSim could not be established via sockets). Make sure that the Python modules ‘cbor2’ and ‘zmq’ are properly i…