C++系列一: C++简介

news2024/10/1 3:28:35

C++入门简介

    • 1. C++语言的特点
    • 2. C++编译器
    • 3. 第一个 C++ 程序
    • 4. 总结(手稿版)

C++ 是一种高级编程语言,是C语言的扩展和改进版本,由Bjarne Stroustrup于1983年在贝尔实验室为了支持C语言中的面向对象编程而创建。C++ 既能够进行底层的系统编程,也可以进行高层次的应用程序开发。

C++ 有丰富的语法特性,包括类、虚函数、模板、多重继承、多态等等特性,可用于操作系统、网络通信、嵌入式开发、游戏开发、桌面应用程序开发、图形图像处理等领域。

1. C++语言的特点

C++语言作为一种面对对象语言,具有面向对象开发的三大特性:

  • 封装性:屏蔽内部细节,只表现外部行为。(基础)
  • 继承性:派生类继承基类属性和服务。(关键)
  • 多态性:向不同类对象发同一消息,产生不同行为。(补充)

类和对象:类是具有相同属性和服务的若干对象的集合,对象是某个类的一个实例

此外,C++语言还具有以下特点:

  • 可移植性:C++ 的代码可以跨平台运行,即一段 C++ 代码可在不同的操作系统上编译运行。这是因为 C++ 的编译器可以将源代码转换成目标代码,目标代码可在不同的机器上执行。
  • 可扩展性:C++ 支持多项编程范式,包括面向过程、面向对象和泛型编程等,这些编程范式可以让程序员以不同的方式组织代码,使得 C++ 可以适用于各种应用场景。
  • 代码重用性:C++ 支持模板和抽象类等特性,这些特性可以让程序员编写可重用的代码。在 C++ 中可定义一些通用类型或函数,然后在其他地方重复使用这些通用类型或函数。

2. C++编译器

学习 C++ 需要先安装一个 C++ 编译器。C++ 编译器可以将源代码转换成可执行文件,让程序在计算机上运行。以下是几种常见的 C++ 编译器:

  • GCC:GNU Compiler Collection 是一个自由软件的编译器,支持多种语言(其中包括 C++)。GCC 以 ANSI C 语言为基础开发,在许多 Unix 和 Linux 系统上被广泛使用。
  • Clang:Clang 是用于 C、C++、Objective-C 和 Objective-C++ 的可移植编译器前端。它是 LLVM 项目的一部分,能够生成高质量的代码和非常详细的错误信息。
  • Visual C++:Visual C++ 是微软公司推出的用于 Windows 平台的 C++ 编译器,被广泛应用于 Windows 操作系统、桌面应用、游戏开发、嵌入式系统开发等领域(下载地址)。
  • Intel C++ Compiler:Intel C++ Compiler 是 Intel 公司开发的 C++ 编译器,支持多个平台,包括 IA-32、Intel 64、IA-64、ARM 和 MIPS 等。

不同的操作系统和编译器可能有不同的安装方式和配置方法,安装过程中,需要仔细阅读安装向导和相关文档,并根据实际情况进行设置和调整。

3. 第一个 C++ 程序

(1)Hello World

打开一个文本编辑器,输入以下代码:

#include <iostream>

int main()
{
    std::cout << "Hello, world!" << std::endl;
    return 0;
}

执行这个程序输出

“Hello, world!”

(2)C++文件组成

C++ 文件主要包括文件头、预处理指令、全局变量、函数定义四个部分。

  • 文件头:包含了版权声明、作者、日期等信息,通常以注释的形式出现在文件的开头。
  • 预处理指令:用来引入头文件、宏定义、条件编译等操作,对代码进行预处理。
  • 全局变量:程序中定义的在函数外部的变量被称为全局变量,可以在整个程序中访问。
  • 函数定义:C++ 程序通过不同的函数来实现不同的功能。函数的定义包括函数名、形参、函数体和返回值类型。函数定义一般放在主函数之前。

C++ 支持两种注释:单行注释多行注释。单行注释以“//”开头,直到行尾结束;而多行注释以“/”开头,“/”结尾,可跨越多行。

// 这是一个单行注释
/*
这是一个
多行注释
*/

(3).cpp文件的执行

C++ 程序是一种编译型语言,要想将程序转化成能够在计算机上执行的二进制代码,必须先将 C++ 程序源代码进行编译和链接。

.cpp 是 C++ 程序源代码文件的文件扩展名,用编辑器编写 C++ 源代码,将其保存成 .cpp 文件,.cpp文件从编辑到执行的基本流程:

  • (1)将 .cpp 文件作为源代码,使用 C++ 编译器进行编译。在编译过程中,编译器会进行词法分析、语法分析、生成中间代码等操作,并将结果保存在目标文件中。
  • (2)将生成的目标文件与库文件进行链接,生成可执行文件(即 .exe 文件)。链接的过程主要包括符号解析、重定位等操作,最终生成可以在计算机上运行的二进制代码。
  • (3)用户双击 .exe 文件或者使用命令行执行可执行文件时,操作系统会启动进程,并在进程内部执行程序。进程启动后,操作系统会将可执行文件的二进制代码装载到进程的虚拟内存空间中,然后根据程序入口点开始执行。
  • (4)程序开始执行后,首先会执行 main 函数中的代码。main 函数是程序的入口函数,因此所有的程序逻辑都应该从这里开始执行。
  • (5)程序执行完毕后,将会退出进程,并清理所占用的系统资源,例如内存、句柄等。

由于 C++ 语言的高效、快速和稳定性,它在很多行业中被广泛应用,人才需求非常大。而且学习 C++ 可以更深入地了解计算机底层的工作原理,对于想从事底层开发或优化等领域的程序员来说非常重要。

4. 总结(手稿版)

20年前学习C++语言的幼稚记录
在这里插入图片描述

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

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

相关文章

全注解下的SpringIoc 续4-条件装配bean

Spring Boot默认启动时会加载bean&#xff0c;如果加载失败&#xff0c;则应用就会启动失败。但是部分场景下&#xff0c;我们希望某个bean只有满足一定的条件下&#xff0c;才允许Spring Boot加载&#xff0c;所以&#xff0c;这里就需要使用Conditional注解来协助我们达到这样…

二叉搜索树(BST)详解

文章目录 性质二叉搜索树的遍历遍历伪代码实现 二叉搜索树的查找伪代码实现 二叉搜索树最大元素伪代码实现 二叉搜索树最小元素伪代码实现 二叉搜索树的插入伪代码实现 二叉搜索树的删除删除叶子节点&#xff08;对应上面第一种情况&#xff09;&#xff1a;删除度为1的节点&am…

机械硬盘(HDD)与固态硬盘(SSD)

目录 机械硬盘&#xff08;HDD&#xff09; 最小组成单元是扇区 硬盘结构 硬盘工作原理 硬盘上的数据组织 硬盘指标 影响性能的因素 固态硬盘&#xff08;SSD&#xff09; 最小存储单元是Cell SSD的特点 SSD架构 NAND Flash 闪存介质 地址映射管理 FTL闪存转换层 机械硬盘&…

Python之模块和包(九)

1、模块 1、模块概述 模块是一个包含了定义的函数和变量等的文件。模块可以被程序引入&#xff0c;以使用该模块中的函数等功能。通俗讲&#xff1a;模块就好比是工具包&#xff0c;要想使用这个工具包中的工具(就好比函数)&#xff0c;就需要导入这个模块。 2、import 在P…

Redis分布式锁原理之实现秒杀抢优惠卷业务

Redis分布式锁原理之实现秒杀抢优惠卷业务 1. 实现秒杀下单2. 库存超卖问题分析2.1 乐观锁解决超卖问题 3. 优惠券秒杀-一人一单3.1 集群环境下的并发问题 4、分布式锁4.1 基本原理和实现方式对比4.2 Redis分布式锁的实现核心思路4.3 实现分布式锁版本一4.4 Redis分布式锁误删情…

【Java入门合集】第三章面向对象编程(上)

【Java入门合集】第三章面向对象编程&#xff08;上&#xff09; 博主&#xff1a;命运之光 专栏&#xff1a;JAVA入门 理解面向对象三大主要特征&#xff1b; 掌握类与对象的区别与使用&#xff1b; 掌握类中构造方法以及构造方法重载的概念及使用&#xff1b; 掌握包的定义、…

国民技术N32G430开发笔记(14)-IAP升级 usart2接收数据

IAP升级 Usart2接收数据 1、之前有一节我们将PA6 PA7复用成了usart2的功能&#xff0c;这一节我们用usart2接收来自树莓派的升级请求&#xff0c;然后完成N32G430的Iap升级。 2、接线 PA9 PA10 接usb转串口模块A&#xff0c;A模块插入电脑。 PA6 PA7 接usb转串口模块B&#xf…

【移动端网页布局】流式布局案例 ⑥ ( 多排按钮导航栏 | 设置浮动及宽度 | 设置图片样式 | 设置文本 )

文章目录 一、多排按钮导航栏样式及核心要点1、实现效果2、总体布局设计3、设置浮动及宽度4、设置图片样式5、设置文本 二、完整代码实例1、HTML 标签结构2、CSS 样式3、展示效果 一、多排按钮导航栏样式及核心要点 1、实现效果 要实现下面的导航栏效果 ; 2、总体布局设计 该导…

计算机网络笔记:DNS域名解析过程

基本概念 DNS是域名系统&#xff08;Domain Name System&#xff09;的缩写&#xff0c;也是TCP/IP网络中的一个协议。在Internet上域名与IP地址之间是一一对应的&#xff0c;域名虽然便于人们记忆&#xff0c;但计算机之间只能互相认识IP地址&#xff0c;域名和IP地址之间的转…

基于探路者算法的极限学习机(ELM)回归预测-附代码

基于探路者算法的极限学习机(ELM)回归预测 文章目录 基于探路者算法的极限学习机(ELM)回归预测1.极限学习机原理概述2.ELM学习算法3.回归问题数据处理4.基于探路者算法优化的ELM5.测试结果6.参考文献7.Matlab代码 摘要&#xff1a;本文利用探路者算法对极限学习机进行优化&…

算法 DAY45 动态规划07 70. 爬楼梯 322. 零钱兑换 279. 完全平方数 139. 单词拆分 多重背包

70. 爬楼梯 和377. 组合总和 Ⅳ (opens new window)基本就是一道题了。本题代码不长&#xff0c;题目也很普通&#xff0c;但稍稍一进阶就可以考察完全背包 class Solution { public:int climbStairs(int n) {vector<int> nums {1,2};vector<int> dp(n1,0);dp[0…

while语句和until语句顺便带点小实验

while语句和until语句 一、while用法二、Until循环语句三、趣味小实验猜价格的游戏&#xff08;价格是随机数&#xff09;写一个计算器脚本闲来无事去购物 一、while用法 for循环语句非常适用于列表对象无规律&#xff0c;且列表来源以固定&#xff08;如某个列表文件&#xf…

Android Studio开发图书管理系统APP

Android Studio开发项目图书管理系统项目视频展示&#xff1a; 点击进入图书管理系统项目视频 引 言 现在是一个信息高度发达的时代&#xff0c;伴随着科技的进步&#xff0c;文化的汲取&#xff0c;人们对于图书信息的了解与掌握也达到了一定的高度。尤其是学生对于知识的渴…

word构建基块:快速插入重复内容的高级剪切板

本文参考自 word录入技巧&#xff1a;如何用自动图文集快速插入重复内容 - 知乎 介绍 构建基块&#xff0c;它就是和剪切板一样&#xff0c;点一下就粘贴一份新的&#xff0c;用于解决大量重复内容的复制粘贴 构建基块包括自动图文集和快速表格&#xff0c;实际上都是构建基块…

Blender启动场景的修改

Blender启动场景的修改 1 使用版本2 现象描述3 解决方法4 启动场景路径5 清理场景资源5.1 空场景大小5.2 清理图片资源5.2.1 断开数据块关联5.2.2 断开伪用户关联5.2.3 断开多用户关联5.2.4 清理数据块5.2.6 文件校验 5.3 使用自建资源库 6 数据块类型 1 使用版本 Blender 3.3…

二叉树建立、遍历、打印(23春教学)

#include<stdio.h> #include <malloc.h> #include <conio.h> typedef char DataType; typedef struct Node {DataType data;struct Node *LChild;struct Node *RChild; }BitNode,*BitTree; void CreatBiTree(BitTree *bt)//用扩展先序遍历序列创建二叉树&am…

《LearnUE——基础指南:上篇—3》——GamePlay架构WorldContext,GameInstance,Engine之间的关系

目录 平行世界是真实存在的吗&#xff1f; 1.3.1 引言 1.3.2 世界管理局&#xff08;WorldContext&#xff09; 1.3.3 司法天神&#xff08;GameInstance&#xff09; 1.3.4 上帝&#xff08;Engine&#xff09; 1.4 总结 平行世界是真实存在的吗&#xff1f; 1.3.1 引言 …

DAY 51 LVS负载均衡——DR模式

数据包流向分析 &#xff08;1&#xff09;客户端发送请求到Director Server (负载均衡器)&#xff0c;请求的数据报文&#xff08;源IP是CIP&#xff0c;目标IP是VIP&#xff09;到达内核空间。 &#xff08;2&#xff09;Director Server 和Real Server 在同一个网络中&…

【五一创作】ERP实施-委外业务-委外采购业务

委外业务主要有两种业务形态&#xff1a;委外采购和工序外协&#xff0c;委外采购主要是在MM模块中实现&#xff0c;工序外协主要由PP模块实现&#xff0c;工序外协中的采购订单创建和采购收货由MM模块实现。 委外采购概念 委外采购&#xff0c;有些企业也称为带料委外或者分包…

【Spring框架全系列】方法注解@Bean的使用

&#x1f4ec;&#x1f4ec;哈喽&#xff0c;大家好&#xff0c;我是小浪。上篇博客我们介绍了五大类注解的使用方法&#xff0c;以及如何解决Spring使用五大类注解生成bean-Name的问题&#xff1b;那么&#xff0c;谈到如何更简单的读取和存储对象&#xff0c;这里我们还需要介…