0、C++预备知识

文章目录

  • 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.mzph.cn/news/627620.shtml

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

相关文章

蓝莓产量预测(R语言版)

数据描述 字段名 描述 字段名 描述 id 蓝莓唯一标识 MinOfUpperTRange 花期内最高温带日平均气温的最低记录, Clonesize 蓝莓克隆平均大小 AverageOfUpperTRange 花期内最高温带日平均气温, Honeybee 蜜蜂密度 MaxOfLowerTRange 花期内最低温带日平均气温的最…

linux高级篇基础理论十二( 自动化运维工具Ansible )

♥️作者:小刘在C站 ♥️个人主页: 小刘主页 ♥️不能因为人生的道路坎坷,就使自己的身躯变得弯曲;不能因为生活的历程漫长,就使求索的 脚步迟缓。 ♥️学习两年总结出的运维经验,以及思科模拟器全套网络实验教程。专栏:云计算技…

vue-quill-editor 图片放大缩小 及富文本解析 放大图片预览

接上回 巴阿这是上一篇博客的标题 《vue vue-quill-editor 富文本编辑器 (图片问题)拦截粘贴动作 将粘贴的图片上传服务器 一个页面渲染多个富文本编辑器(使用场景循环遍历 个数不定)》 上篇传送门 需求1.编辑框里图片可放大缩…

java stream distinct根据list某个字段去重

项目场景: java stream distinct根据list某个字段去重,普通List简单去重: import java.util.Arrays; import java.util.List; import java.util.stream.Collectors;public class TestMain {public static void main(String[] args) {List&l…

什么是DNS(域名系统)

域名系统(DNS)像是互联网的电话簿,将人们容易记住的网址转换成计算机能理解的IP地址。 没有DNS,我们就需要记住复杂的数字序列来访问网站 DNS的基本概念 定义:DNS是一个分布式数据库,它将域名&#xff08…

阿里云服务器ECS性能与优势,为什么国内第一云?

为什么选择阿里云?阿里云服务器有哪些优势?阿里云全球第三,国内第一云,阿里云服务器网aliyunfuwuqi.com分享云服务器ECS在丰富ECS实例架构、弹性灵活、稳定可靠、便捷易用、安全保障和成本优化多方面优势: 阿里云服务…

BSP-D2000平台调试CM9434串口芯片

1.硬件原理图 原理图显示两块9434的INT分别接到D2000的GPIO0_A3和GPIO0_A5. 2.配置 2.1 设备树 gpio <&pio 1 1 1 1 1 0>;| | | | | | | || | | | | | | ------表示有效电平| | | | | | | | | …

pyqt5写一个文本处理软件

参考资料https://www.zhihu.com/column/pyqt5 导入安装包 pip install PyQt5 -i https://pypi.douban.com/simple pip install PyQt5-tools -i https://pypi.douban.com/simplepyqt5 designer 如何将生成的UI文件转化为py代码 pyuic5 main.ui -o main.py好的&#xff0c;下…

cf-913-div3

title: cf 913 div3 date: 2024-01-16 16:42:45 tags: vp categories: 比赛 A. Rook 题目大意 可以在棋盘上横向或纵向移动任意步数&#xff0c;找出车的所有走法 解题思路 直接输出横向和纵向车能移动的位置即可 代码实现 void solve() {string s; cin >> s;string …

走迷宫之推箱子

前言&#xff1a; 在上一篇文章当中我介绍了一个走迷宫的写法&#xff0c;但是那个迷宫没什么可玩性和趣味性&#xff0c;所以我打算在迷宫的基础上加上一个推箱子&#xff0c;使之有更好的操作空间&#xff0c;从而增强了游戏的可玩性和趣味性。 1. 打印菜单 void menu() {…

探索 Python:发现有趣的库——第 1 章:数据可视化之旅

在一个充满活力的科技世界中&#xff0c;数据分析专家“算法仙”和编程爱好者“代码侠”相遇了&#xff0c;决定一起踏上数据可视化的探险之旅。他们将运用 Matplotlib 和 Seaborn 这两个强大的 Python 库&#xff0c;将枯燥的数据转化为生动的图形。 算法仙&#xff1a;你好&…

为什么要进行数模转换,数模转换的应用场景有哪些?

问题描述&#xff1a;为什么要进行数模转换&#xff0c;数模转换的应用场景有哪些&#xff1f; 问题解答&#xff1a; 数模转换&#xff08;Digital-to-Analog Conversion&#xff0c;简称DAC&#xff09;是将数字信号转换为模拟信号的过程。进行数模转换的原因和一些应用场景…

Kafka 的 Consumer Group 解读

作为一份笔记&#xff0c;本文再次梳理一下 Kafka 的 Consumer Group。我们知道&#xff0c;一个 Topic 往往会有多个 Partition&#xff0c;一条消息只会被写到一个 Kafka 的 Partition 中&#xff0c;那 Consumer 是怎么消费 Message 的呢&#xff1f; Consumer Group 又从中…

如何低成本打造高效跨国企业内网

随着企业数字化转型的加速&#xff0c;企业对网络连接、安全性和可靠性的需求也变得越来越高&#xff0c;最近小编收到了好几封私信&#xff0c;咨询跨境企业内部组网方案。 投稿的是某跨国公司的IT运维人员&#xff0c;总部在海外&#xff0c;国内分支机构每天都需要进行数据互…

【ASP.NET Core 基础知识】--中间件--什么是中间件

本篇文章作为中间件单元的开篇文章&#xff0c;通过这篇文章可以了解什么是中间件、内置中间件的使用以及怎么创建自定义中间件。我们先来看一下中间件的角色、目的和重要性。 1. 角色 请求处理管道的构建块&#xff1a; 中间件是构成ASP.NET Core请求处理管道的基本组成部分…

[Android]实现一个权限申请类

[Android]实现一个权限申请类 导言 在引入了动态权限申请之后&#xff0c;Android的权限申请就变得尤为繁琐&#xff0c;若是按照原有的方法一板一眼地进行申请&#xff0c;样板代码未免太多。因此本篇文章就使用ActivityResult API&#xff0c;来实现一个简单的权限申请类来帮…

C练习——魔术师猜三位数

题目&#xff1a; 有一种室内互动游戏&#xff0c;魔术师要每位观众心里想一个三位数abc&#xff08;a、b、c分别是百位、十位和个位数字&#xff09;&#xff0c;然后魔术师让观众心中记下acb、bac、bca、cab、cba五个数以及这5个数的和值。只要观众说出这个和是多少&#xf…

设计模式之多线程分工模式--- 生产-消费者模式

系列文章目录 设计模式之避免共享的设计模式Immutability&#xff08;不变性&#xff09;模式 设计模式之并发特定场景下的设计模式 Two-phase Termination&#xff08;两阶段终止&#xff09;模式 设计模式之避免共享的设计模式Copy-on-Write模式 设计模式之避免共享的设计模…

Linux定时删除n天前的数据

Linux定时删除n天前的数据 1.创建删除脚本并授权 touch /home/data/script/shell/auto-del-60-days-ago-log.sh chmod x auto-del-60-days-ago-log.sh 2.编写shell脚本&#xff08;auto-del-60-days-ago-log.sh&#xff09; vi auto-del-60-days-ago-log.sh 添加如下内容&a…

Golang 替换数字卡码54题

文章目录 替换数字 54卡码网直接操作读取的[]byte 替换数字 54卡码网 本题为卡码网的54题&#xff0c;起为acm模式的答题 这里我们不在输入获得的[]byte类型上直接修改&#xff0c;而是保存在新建的[]byte上 golang小知识&#xff1a; 单引号’&#xff0c;表示byte类型或rune…