首页 > 编程语言 >C++ 学习预备知识

C++ 学习预备知识

时间:2024-08-06 19:27:24浏览次数:8  
标签:预备 代码 知识 程序 可移植性 标准 C++ 运行

1 C++简介

 1.1 起源

       C++与C语言一样,也是在贝尔实验室诞生的,名称C++来自C语言中的递增运算符++,该运算符将变量加1。这也表明,C++是C语言的扩充版本。

       C++融合了3种不同的编程方式:C语言代表的过程性语言、C++在C语言基础上添加的类代表的面向对象语言、C++模板支持的泛型编程。

 1.2 C++的基本特点

  • 静态类型:C++是一种静态类型语言,即在编译时进行类型检查,这有助于减少运行时错误。
  • 编译式:C++程序需要编译成机器语言后才能运行,这通常比解释执行的程序具有更高的运行效率。
  • 通用性:C++是一种通用的编程语言,可用于多种领域的软件开发,包括系统/应用软件、游戏开发、设备驱动程序等。
  • 大小写敏感:C++区分大小写,这意味着变量名Aa在C++中被视为两个不同的标识符。
  • 不规则性:C++的语法相对灵活,允许程序员以多种方式表达相同的逻辑

1.3 C++的应用领域

        C++几乎可以创建任何类型的程序,包括但不限于:

  • 游戏开发:C++因其高效性而被广泛用于游戏引擎和游戏的开发。
  • 设备驱动程序:C++可以直接操作硬件资源,因此常用于编写设备驱动程序。
  • 高性能计算(HPC):C++的高运行效率使其成为高性能计算领域的优选语言。
  • 云计算:在云计算领域,C++也发挥着重要作用,特别是在需要高效处理大量数据的场景下。
  • 桌面和移动应用:C++可以用于开发桌面和移动应用程序,尽管在某些平台上可能不是首选语言。

1.4 C++的编程环境和工具

        C++拥有丰富的编程环境和工具支持,包括集成开发环境(IDE)如Visual Studio、Eclipse CDT等,以及编译器如GCC、Clang等。这些工具为C++程序员提供了强大的代码编辑、调试和编译功能。

2 可移植性与标准

       C++的可移植性与标准是两个紧密相关的概念,它们共同影响着C++程序在不同系统和平台上的运行效果。

 2.1 C++的可移植性

       可移植性是指程序在不同的系统上能够正确地运行,而不需要进行任何修改。C++作为一种高度可移植的编程语言,能够在不同的操作系统和硬件平台上运行。然而,为了确保程序的可移植性,需要遵循一些规则和最佳实践:

  1. 避免使用特定于平台的代码:不同操作系统有不同的API和特性,使用特定于某个平台的API或功能会导致代码不可移植。因此,在编写C++程序时,应尽可能避免使用这类代码。
  2. 使用跨平台库:跨平台库如Boost、Qt等提供了在不同平台上都能使用的API和功能,使用这些库可以简化代码并提高可移植性。
  3. 注意文件路径和分隔符:不同操作系统有不同的文件路径规则,如Windows使用反斜杠(\)作为路径分隔符,而Linux和macOS使用正斜杠(/)。在编写C++程序时,应避免硬编码文件路径,而应使用相对路径或跨平台的文件路径库。
  4. 避免未定义行为:C++标准中定义了一些未定义行为,如未初始化的变量或指针的使用。在编写程序时,应避免这些未定义行为,以确保程序在不同系统上的行为一致。

 2.2 C++的标准

      C++的标准是由国际标准化组织(ISO)和国际电工委员会(IEC)联合制定的,它规定了C++语言的语法、语义和库函数等。C++的标准经历了多次修订和扩展,目前最新的标准是C++20(发布于2020年)。

      C++标准的重要性在于它确保了C++程序在不同编译器和平台上的兼容性和可移植性。遵循C++标准的程序可以在任何支持该标准的编译器上编译和运行,而无需进行任何修改。

      C++标准的主要版本包括:

  • C++98:第一个国际标准,于1998年发布。它描述了C++的基本特性和库函数,并引入了异常处理、运行时类型识别(RTTI)和模板等特性。
  • C++03:C++98的修订版,于2003年发布。它主要对C++98进行了技术性的修订和错误修正,但没有引入新的语言特性。
  • C++11:于2011年发布,引入了众多新特性,如自动类型推导(auto)、基于范围的for循环、lambda表达式、智能指针等。这些特性极大地提高了C++的编程效率和代码质量。
  • C++14C++17C++20等:后续的标准版本在C++11的基础上进一步扩展了C++的功能和特性,如泛型Lambda表达式、结构化绑定、模块等。

       总之,C++的可移植性和标准是两个相辅相成的概念。遵循C++标准并遵循一些最佳实践可以确保C++程序在不同系统和平台上的正确性和可移植性。

 3 程序的创建

          运行一个编写好的C++程序的具体步骤取决于计算机环境和使用的C++编译器,但大体如下(图3.1):

图3.1

      1.使用文本编译器编写程序,并将其保存到文件中,这个文件就是程序的源代码。

       2.编译源代码。即运行一个程序,编译就是将我们所写的源代码翻译成主机所“看得懂”的内部语言——机器语言。包含了翻译后的程序的文件就是程序的目标代码。

       3.将目标代码与其他代码链接起来。例如,C++程序通常使用库,C++库包含一系列的计算机例程(被称为函数)的目标代码。链接指的是将目标代码同使用的函数的目标代码以及一些标准的启动代码组合起来,生成程序的运行阶段版本。包含该最终产品的文件被称为可执行代码。

标签:预备,代码,知识,程序,可移植性,标准,C++,运行
From: https://blog.csdn.net/South_Rosefinch/article/details/140958119

相关文章

  • Linux系统中“日志”的部分相关重要知识内容
    1.RHEL日志文件保存在哪个目录中?/var/log目录中2.什么是syslog消息和非syslog消息?Syslog信息:由syslog系统设备产生的信息,Linux系统启动和运行的过程中产生的信息非syslog消息:通过其他方式或系统设备,非syslog系统设备生成的日志信息。3.哪两个服务处理RHEL......
  • 数论基础知识(下)
    目录欧拉函数n的分解质因数求欧拉函数试除法求欧拉函数值积性函数筛法朴素筛埃氏筛欧拉筛(线性筛)线性筛欧拉函数快速幂同余欧拉定理费马小定理乘法逆元欧拉函数互质:∀a,b∈N,若gcd(a,b)=1,则a,b互质。定义: :1∼n......
  • C++解析ini文件
    目录一.什么是ini文件二.ini文件的格式一般是什么样的1.节2.参数3.注释三.C++实现ini文件的解析四.其他这篇文章简单讨论一下ini文件。一.什么是ini文件ini文件其实就是一种配置文件,常见于Windows的系统配置文件,当然也可以是其他用途,你的用法你说了算。二.ini文件......
  • 大模型与人工智能有什么区别?看完涨知识了
    前言人工智能是一个广泛的概念,涵盖了多个领域和技术,旨在实现各种智能化应用。大模型则是人工智能领域中的一个特定技术或方法,主要通过构建规模庞大的模型来处理复杂任务。随着科技的飞速发展,人工智能(ArtificialIntelligence,简称AI)已经成为了我们生活中不可或缺的一部分。......
  • Java集合知识点
    一、集合类及其特点在程序设计中,一个重要的组成部分就是如何有效地组织和表示数据通常,我们把用于存储和管理数据的实体称为数据结构而把一组元素按照一定的数据结构进行存储和管理的容器。就称为集合。通过数据结构,我们可以实现不同特性的集合。每个集合都可以保存一组其他类......
  • Java SE知识点六:面向对象之:多态
    1.多态的概念多态也是Java面向对象的三大要点之一,多态的概念通俗来讲就是一个事物的多种形态,让不同的对象去完成一个方法时会出现不同的状态。比如,猫吃饭和狗吃饭就是不同的状态,但用到的方法都是一样。2.实现多态2.1实现条件要实现多态需要遵循以下条件:必须是在......
  • 【C++/STL】map和set的封装(红黑树)
     ......
  • FreeRTOS基础知识详细版
    RTOS概念‌‌‌‌‌‌RTOS全称是RealTimeOperatingSystem,中文名就是实时操作系统,提供了任务调度、内存管理、中断处理等功能。‌1.任务调度:裸机编程需要手动调度任务,而RTOS提供自动的任务调度器。2.硬件管理:裸机编程需要开发者手动管理硬件资源,RTOS提供了......
  • C#:深入理解接口及低耦合等周边知识
    接口是完全未实现逻辑的类,纯虚类,只有函数成员,且都为public.换句话说:接口是函数成员全都是abstractpublic类型的抽象类.文章目录接口==契约声明接口接口是引用类型实践价值接口与as运算符显示接口成员实现紧耦合及解决方法解决方法:接口隔离接口==契约定义......
  • C++学习笔记----Strings与String View(4)-- 字符串操作
        今天讲点简单易懂的,字符串操作,当然了,不是全部,列出几个典型的字符串操作,完整地可以参考相关资料,网上一搜一把哦。substr(pos,len):返回特定位置pos,特定长度的子字符串。find(str):返回字符串的位置,如未找到则返回string::npos。replace(pos,len,str):用新的字符串str......