首页 > 编程语言 >《C++ Primer Plus》

《C++ Primer Plus》

时间:2023-09-23 22:33:48浏览次数:30  
标签:源代码 编程 程序 C++ C语言 编译 Plus Primer

第一章 预备知识

1.1 C++简介

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


1.2 C++简史

C语言

   20世纪70年代,贝尔实验室的Dennis Ritchie致力开发UNIX操作系统。传统上,程序员使用汇编语言来满足这些需求。但由于汇编语言是低级(low-level)语言,需要之间操作硬件,比如说访问CPU寄存器和内存单元,,因此汇编语言只能针对特定的计算机处理器。然而,UNIX是为在不用的计算机上工作而设计的,需要使用高级(high-level)语言,致力于解决问题,而不针对特定硬件。一种被称为编译器的特殊程序将高级语言翻译成特定的计算机语言。Ritchie希望有一种能将低级语言的通用性、硬件访问能力和高级语言的通用性、可移植性融合在一起,于是他在旧语言的基础上开发了C语言。


C语言编译原理

   C语言在最初面世时也是过程性语言,程序按照一系列特定的流程生成结果。随着程序规模的扩大,程序语言遇到组织混乱的问题,代码难以阅读。为了解决这种问题,于是又开发出了结构化编程(structured programming)。C语言具有这种特性,比如for循环、if else语句等。

   另一新原则是自顶向下(top-down)设计。C语言的理念是将大型程序分解成小型的任务,它鼓励使用程序单元(函数)来表示各个模块。综上所述,结构化编程技术反映了过程性编程的思想。


面向对象编程

   结构化编程在编写大型程序时仍面临着挑战,因此推出了OOP编程。OOP强调数据,不像过程性编程那样试图使问题满足语言的过程性方法,而是试图让语言来满足问题的要求。其理念是设计与问题的本质特性相对应的数据格式。从低级组织(如类)到高级组织(如程序)的处理过程叫做自下而上(bottom-up)的编程。


C++和泛型编程

   泛型编程是C++支持的另一种编程模式。泛型编程对语言进行扩展,以便可以只编写一个泛型函数,即可用于各种实际类型。C++模板提供了完成这种任务的机制。


C++的起源

   C++也是在贝尔实验室发明的,Bjarne Stroustrup于20世纪80年代开发出了这种语言。

   C++是C语言的超集,任何有效的C程序都是有效的C++程序。


1.3 可移植性和标准

   如果在不修改代码的情况下,重新编译程序后,程序良好运行,则该程序是可移植的。(当然,使用不同的操作系统,对程序重新编译都是必须的)。可移植性存在两个方面障碍,一,硬件特性的程序是不可移植的,二,语言标准的差异会使程序不可移植(由此制定了国际标准ANSI/ISO,如C++98,C++03,C++11等)。


1.4 程序创建

运行步骤

  1. 编写程序,得到源代码
  2. 编译,将源代码翻译为机器语言
  3. 链接,将目标代码与其它代码链接起来,最后生成可执行代码
    (比如说你在代码中用到标准库,那么在链接阶段就会把标准库的二进制代码与你写的目标代码链接)

编程步骤

创建源代码文件

   使用集成开发环境(IDE)并添加源代码文件的扩展名(.cpp等)。


编译和链接

   在最初实现C++时,使用了从C++到C的编译器程序,叫cfront。随着C++的普及,才有了将C++源代码直接生成目标代码的编译器。

   Linux系统会生成可执行文件a.out,而windows系统会得到可执行文件a.exe。


Windows编译器命令

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

  • Compile通常意味着对当前打开的文件中的代码进行编译。
  • Build和Make通常意味着编译项目中所有源代码文件的代码。这通常是一个递增过程,也就是说,如果项目包含3个文件,而只有其中一个文件被修改,则只重新编译该文件。
  • Build All通常意味着重新编译所有的源代码文件。
  • Link意味着(如前所述)将编译后的源代码与所需的库代码组合起来。
  • Run或Execute意味着运行程序。通常,如果您还没有执行前面的步骤,Run将在运行程序之前完成这些步骤。
  • Debug意味着以步进方式执行程序。
  • 编译器可能让您选择要生成调试版还是发布版。调试版包含额外的代码,这会增大程序、降低执行速度,但可提供详细的调试信息。

1.5 总结

   C++是世界上最好的语言

标签:源代码,编程,程序,C++,C语言,编译,Plus,Primer
From: https://www.cnblogs.com/vLiion/p/17725157.html

相关文章

  • c++总结
    c++prime(常备字典)+c++手册+二十一天学通c++(这个很简单,看个人情况)黑马c++适合绝大多数人入门c++码农论坛更适合二刷,比较精简,讲的不错,但是涉及经验讲解过多,不一定适合新手侯捷以及cherno(这两个是巨佬)适合工作再看......
  • c++基础
    一、C++输出数据数据是信息的载体,写程序的目的就是为了处理数据。1.数据的分类数据有数字、字符和字符串三种类型。数字:直接书写,如:100、18.52、0、9;字符:用半角的单引号包含的一个符号,如:'A'、'Z'、'0'、'9'、'~'、'+',汉字和全角的标点符号不是字符;字符串:用半角的双引号包含......
  • C++ 的cout格式化输出
    在某些实际场景中,我们经常需要按照一定的格式输出数据,比如输出浮点数时保留2位小数,再比如以十六进制的形式输出整数,等等。对于学过C语言的读者应该知道,当使用printf()函数输出数据时,可以通过设定一些合理的格式控制符,来达到以指定格式输出数据的目的。例如%.2f表示输出浮点......
  • C++ 公司数量 正解
    题目描述在某个城市里住着n个人,现在给定关于n个人的m条信息(即某2个人认识),假设所有认识(直接或间接认识都算认识)的人一定属于同一个公司。若是某两人不在给出的信息里,那么他们不认识,属于两个不同的公司。已知人的编号从1至 n。请计算该城市最多有多少公司。......
  • C++11新标准
    c++11标准(1)一、longlong类型新增了类型longlong和unsignedlonglong,以支持64位(或更宽)的整型。在VS中,int和long都是4字节,longlong是8字节。在Linux中,int是4字节,long和longlong是8字节。二、char16_t和char32_t类型新增了类型char16_t和char32_t,以支持16位和32位......
  • 笔记 | C++ 命名空间
    命名空间(Namespace)是C++中用于组织和管理代码的重要机制。它允许开发者将一组相关的变量、函数、类等封装在一个独立的命名空间中,以避免命名冲突和提高代码的可维护性。本文将介绍命名空间的概念、如何应用命名空间,以及它的优点和缺点。命名空间的概念在C++中,命名空间是一个逻......
  • C++指针和地址偏移在HotSpot VM中的应用
     在前面我们介绍过new运算符,这个操作实际上上包含了如下3个步骤:调用operatornew的标准库函数。此函数会分配一块内存空间以便函存储相应类型的实例;调用相应类的构造函数;返回一个指向该对象的指针。在第一步中,其实我们可以自己写个operatornew函数对标准库函数进行重载,通......
  • c++ 数据类型及范围
    short:\(-2^{15}\sim2^{15}-1\)unsignedshort:\(0\sim2^{16}-1\)int:\(-2^{31}\sim2^{31}-1\)unsignedint:\(0\sim2^{32}-1\)longlong:\(-2^{63}\sim2^{63}-1\)unsignedlonglong:\(0\sim2^{64}-1\)参考资料:https://www.cnblogs.com......
  • C++笔记(细碎小知识点)1
    1.内联:写在类内或外部声明inline(编译器判断是否内联,不是满足上述条件就一定内联),优点更快2.protected:派生类可以直接调用基类的protected成员3.class类内默认private,struct内默认public4.构造函数最优写法,用初始化(只有构造函数有)效率比在函数中写更高(因编译器先进行初始化再执行......
  • Fallible point in C/C++
    Operator[]Theperformanceof[]inCandC++isdifferent.e.g.,whenyouexcuteA[index]IfAisaobject,itwillcalltheoperator[]IfAisapointer,itisequivalenttoA+indexSo,operatoroverloadingisinvalidtopointer.......