0、C++预备知识

news2024/11/19 20:27:38

文章目录

  • C++与C语言
    • 为什么要学习C++
    • C++为什么难学
    • c++值得学习的新特征
    • C++参考书籍
    • 开发工具
  • 可移植性和标准
  • 程序创建的技巧
    • 编译和链接

C++与C语言

C++是一种计算机高级程序设计语言,C++既可以进行C语言的过程化程序设计,又可以进行以抽象数据类型为特点的基于对象的程序设计。

C++对比C语言的特点:

  1. 与C语言的兼容性。C++与C语言完全兼容,c语言的绝大多数内容可以直接用于C++的程序设计。用C语言编写的程序可以不加修改的用于C++。
  2. 数据封装和数据隐藏。在C++中类是支持数据封装的工具,对象则是数据封装的实现。C++通过建立用户定义类,支持数据封装和数据隐藏。
  3. 支持继承和重用。在C++现有类的基础上可以声明新类型,这就是继承和重用的思想。通过继承和重用可以更有效的组织程序结构,明确类间关系,并且充分利用已有的类来完成更复杂深入的开发。新定义的类为子类成为派生类,它可以从父类那里继承所有非私有的属性和方法作为自己的成员。

为什么要学习C++

  1. C++能提升性能。
  2. 编程语言的需求总结为四个:效率、灵活、抽象、生产力。C语言注重前两者,C++注重前三者,JAVA、.net这些注重后两者。
  3. C++应用范围广泛。

C++为什么难学

  1. C++支持的编程范式
    过程式:for/if
    数据抽象:封装、继承和多态
    基于对象:程序=对象+对象+对象+消息传递
    面对对象式
    函数式:递归方式进行编程
    泛型形式:程序=对象+对象+抽象行为。抽象行为能够施加在不同类型而又大相径庭的对象上。通用编程的思想
    模板元形式:模板元编程是指给出代码的产生规则,让编译器产生新代码实现我们预期的功能。这样的话,某些运行时工作被提前到了编译器来完成,从而增加了编译时间,但提高了运行效率,可以实现神奇的类型推导。
  2. 值语义与对象语义:值语义可以拷贝与赋值、对象语义不可进行拷贝和赋值。

c++值得学习的新特征

智能指针如shared_ptr/weak_ptr等;
rvalue reference;
unction/bind
lambda expression and closure

C++参考书籍

  1. c++ primer
  2. Effective C++
  3. C++编程规范
  4. 敏捷软件开发——原则、模式与实践
  5. 代码大全

开发工具

主流的有:GNU g++和微软的VS。在windows中开发的程序可以直接放在Lniux中运行。

可移植性和标准

可移植性:不同平台上编写的代码可否直接运行?
可移植性存在两个障碍:其中的一个是硬件;第二个障碍是语言上的差异(通过制订C++标准来消除)。
C++98、C++11(最新标准)

程序创建的技巧

程序运行大体如下:

  1. .使用文本编辑器编写程序,并将其保在到文件中,这个文件就是程序的源代码。
  2. 编译源代码。这意味着运行一个程序,将源代码翻译为主机使用的内部语言一一机器语言。 包含了翻译后的程序的文件就是程序的目标代码(object code ) 。 .obj
  3. 将目标代码与其他代码链接起来。链接指的是将目标代码同使用的函数的归标代码以及一些标准的启动代码(startup code) 组合起来, 生成程序的运行阶段版本。包含该最终产品的文件被称为可执行代码。
    在这里插入图片描述

编译和链接

创建好项目后,需要对程序进行编译和链接。IDE通常提供了多个菜单项,如Compile(编译)、Build(建立)、Make(生成)、Build All(全部建立)、Link(链接)、Execute(执行)、Run(运行)和Debug(调试),不过同一个IDE中,不一定包含所有这些选项。

  • Compile通常意味着对当前打开的文件中的代码进行编译。
  • Build和Make通常意味着编译项目中所有源代码文件中的代码。如果只有一个修改了则只编译这个文件。
  • Build All通常意味着重新编译所有的源代码文件。
  • Link意味着将编译后的源代码与所需的库代码组合起来。
  • Run和Execute意味着运行程序。
  • Debug意味着以步进方式执行程序。
  • 调试版本对比发布版包含额外的代码,会增大程序,降低执行速度,但可提供详细的调试信息。

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

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

相关文章

强化学习11——DQN算法

DQN算法的全称为,Deep Q-Network,即在Q-learning算法的基础上引用深度神经网络来近似动作函数 Q ( s , a ) Q(s,a) Q(s,a) 。对于传统的Q-learning,当状态或动作数量特别大的时候,如处理一张图片,假设为 210 160 3 …

Android性能优化 | DEX 布局优化和启动配置文件

Android性能优化 | DEX 布局优化和启动配置文件 引言 使用DEX布局优化和启动配置文件是优化Android应用性能的有效途径。DEX布局优化可以通过优化应用程序中的DEX文件布局,从而加快Android应用的启动速度和执行速度。启动配置文件则提供了一种灵活的方式来控制应用…

SDRAM小项目——命令解析模块

简单介绍: 在FPGA中实现命令解析模块,命令解析模块的用来把pc端传入FPGA中的数据分解为所需要的数据和触发命令,虽然代码不多,但是却十分重要。 SDRAM的整体结构如下,可以看出,命令解析模块cmd_decode负责…

知存科技助力AI应用落地:WTMDK2101-ZT1评估板实地评测与性能揭秘

文章目录 一、前言二、深入了解存算一体技术2.1 什么是存算一体2.2 存算一体技术发展历程2.3 基于不同存储介质的存内计算芯片性能比较 三、国产存算一体,重大进展3.1 知存科技:我国存算一体领域的研发领导者 四、知存科技新型 WTM2101 SOC 评估板使用评…

【RTOS】快速体验FreeRTOS所有常用API(9)中断管理

目录 九、中断管理9.1 基本概念9.2 两套API9.3 中断服务程序 九、中断管理 该部分暂无代码 9.1 基本概念 FreeRTOS中的中断管理主要涉及:两套API、中断服务编写 不能阻塞、不能处理耗时任务ISR的优先级高于任务:即使是优先级最低的中断,它的…

【小黑嵌入式系统第十五课】μC/OS-III程序设计基础(四)——消息队列(工作方式数据通信生产者消费者模型)、动态内存管理、定时器管理

上一课: 【小黑嵌入式系统第十四课】μC/OS-III程序设计基础(三)——信号量(任务同步&资源同步)、事件标记组(与&或&多个任务) 前些天发现了一个巨牛的人工智能学习网站&#xff0c…

美媒:OpenAI删除了禁止其技术被用于军事用途的条款

据美国调查新闻网站“拦截者”(The Intercept)1月12日报道,美国知名人工智能企业、ChatGPT母公司OpenAI近日悄悄修改了其产品的使用条款,删除了禁止将OpenAI技术用于军事用途的条文。 报道称,在今年1月10日之前&#…

Springboot+vue的智能无人仓库管理(有报告),Javaee项目,springboot vue前后端分离项目

演示视频: Springbootvue的智能无人仓库管理(有报告),Javaee项目,springboot vue前后端分离项目 项目介绍: 本文设计了一个基于Springbootvue的前后端分离的智能无人仓库管理,采用M&#xff08…

基于Springboot的私人健身与教练预约管理系统(有报告)。Javaee项目,springboot项目。

演示视频: 基于Springboot的私人健身与教练预约管理系统(有报告)。Javaee项目,springboot项目。 项目介绍: 采用M(model)V(view)C(controller)三…

java基础:求数组的和以及平均数案例分析

/* * * 解题思路:首先定义一个包含数字的数组hens, * 然后使用循环遍历数组中的每个元素,并将其累加到sum变量中。 * 最后,将sum除以数组长度得到平均值avg。最终将结果打印输出到控制台。*/ 代码如下: package idea;…

机器学习算法实战案例:GRU 实现多变量多步光伏预测

文章目录 1 数据处理1.1 数据集简介1.2 导入库文件1.3 数据集处理1.4 训练数据构造 2 模型训练与预测2.1 模型训练2.2 模型多步预测2.3 预测可视化 答疑&技术交流机器学习算法实战案例系列 1 数据处理 1.1 数据集简介 实验数据集采用数据集7:常州普利司通光伏…

[linux]同步缓冲区数据到flash

一、需求 由于linux自身策略问题,在某些情况下需主动同步数据到flash。 二、方案 同步数据的两种方式:sync和fsync 2.1sync 将整个缓冲区同步至flash。性能较差。 2.2fsync -d [file] 将某一文件的数据同步至flash。 三、应用实例 3.1sync 3.2f…

虚拟服务器的监控和管理

IT 网络中虚拟环境的出现给 IT 管理员带来了一些挑战,虚拟环境降低了管理硬件和软件的成本和复杂性,同时,他们通常需要 IT 管理员管理更多的空间,以确保完全可见和快速解决问题。 虚拟服务器在现代 IT 基础架构中越来越普遍&…

NXP采用RS RTS测试系统,验证28纳米RFCMOS雷达单芯片 |百能云芯

Rohde & Schwarz的雷达目标模拟器R&S RTS,作为汽车雷达的颠覆性解决方案,尤其是其能够电子模拟非常近距离物体的能力,已被用于验证NXP半导体的下一代雷达传感器参考设计的性能。 这一合作使汽车行业在汽车雷达的发展上迈出了一步&…

.net core 6 集成nacos的服务注册和配置中心

1、安装nuget包 2、加上配置文件 "nacos": {"ServerAddresses": [ "http://127.0.0.1:8848" ],"GroupName": "DEFAULT_GROUP","ClusterName": "DEFAULT","ServiceName": "webapi"…

【Linux实用篇】项目部署 基于Shell脚本自动部署

目录 1. 项目部署 1.1 手动部署项目 1.2 基于Shell脚本自动部署 1.2.1 介绍 1.2.2 推送代码到远程 1.2.3 Git操作 1.2.4 Maven安装 1.2.5 Shell脚本准备 1.2.6 Linux权限 1.2.7 授权并执行脚本 1.2.8 设置静态IP 1. 项目部署 之前我们讲解Linux操作系统时&#xff0…

基于拓扑图与领导跟随法的编队控制算法

matlab2020可运行 https://download.csdn.net/download/ljjjjjjjjjjj/88750436

导航与定位技术已成为移动机器人的核心技术之一

随着移动机器人技术的不断发展和应用领域的扩大,导航与定位技术已成为移动机器人的核心技术之一。本文将介绍移动机器人导航与定位技术的发展现状、技术前沿和面临的挑战。 ​ 一、导航与定位技术的发展现状 移动机器人的导航与定位技术是实现自主移动的关键。目前…

Vscode——运行java项目

1、安装JDK(已安装请忽略) 教程:https://blog.csdn.net/qq812457115/article/details/117451011 验证是否已安装,命令符输入 java -version2、安装Maven(已安装请忽略) 教程:https://blog.csdn…

LeetCode刷题---反转链表II

LeetCode官方给出的解题思路 在需要反转的区间里,每遍历到一个节点,让这个新节点来到反转部分的起始位置。 使用了三指针的思想。 定义三个节点: curr:指向待反转区域的第一个节点 left; next:永远指向 curr 的下一个节…