美文网首页C++学习笔记程序员简友广场
第一章 c++简介和预备知识

第一章 c++简介和预备知识

作者: 阿厉a_li | 来源:发表于2019-10-14 21:56 被阅读0次

    1.C/C++语言的历史:

        20世纪70年代早期,贝尔实验室的Dennis Ritchie(里奇)致力于开发UNIX操作系统(Ken Thompson在69年写了UNIX的核心原型,为了让这个核心能够在不同的计算机上运行,73年Ritchie与Ken合作用C语言重新改写,标志着Unix的诞生)。 操作系统是能够管理计算机资源、 处理计算机与用户之间交互的一组程序。例如,操作系统将系统提示符显示在屏幕上以提供终端式界面、提供管理窗口和鼠标的图形界面以及运行程序。为完成这项工作, Ritchie 需要一种语言,它必须简洁,能够生成简洁、快速的程序, 并能有效地控制硬件。Ritchie 希望有一种语言能将低级语言的效率、硬件访问能力和高级语言的通用性、可移植性融合在一起,于是他在旧语言(也就是B语言)的基础上开发了C语言

        C++也是在贝尔实验室诞生的,Bjarne Stroustrup在20世纪80年代开发出C++,之后又经过了几次扩充。C++强调的是实用价值,而不是意识形态方法,这也是C++获得成功的原因之一。

    2.OOP面向对象的编程

        结构化编程是自上而下的编程,是面向过程的编程形式,是C语言编程带来的一种编程的进步(以前的编程不是结构化的,被形容为意大利面式的编程),但是随着程序的越来越大,结构化编程也遇到了瓶颈。

        OOP面向对象的编程解决了这一问题,它有几个特点:一是自下而上,与结构化编程反其道而行之;二是将数据和方法封装到一起(类与对象);三是代码的重用性更强。

        C++支持面向过程面向对象泛型编程三种形式。

        需要注意的是,这三种编程思想并没有优劣之分,只是适应于不同的方面。即使是面向对象的编程中也需要面向过程的思想,一般的编程中这三种编程思想(特别是面向过程和面向对象)都是需要使用的,要熟练而灵活的采用各种策略。比如C++的面向对象的编程的类方法的具体实现,采用的就是面向过程的处理思想;而一个大的程序要分成几个模块,就是面向过程的思想;每个模块具体使用一些对象和类来进行封装和实现,则明显是面向对象的;如果涉及的是处理不同的数据形式,则需要泛型编程。这三种是相辅相成的,是c++强大而全面的功能的体现。

    3.泛型编程(generic programming)

        只编写一个泛型,而不是特定的类型,用于对实际中各种不同类型泛型是它们的抽象)的管理,c++模板提供了完成这种编程的机制(特别是基于模板的算法和容器)。

    4.编译的过程

        是从源代码文件.cpp或.cxx文件)通过编译器形成目标文件.obj或.o),再通过链接程序形成最终可执行程序.out或.exe)。

    5. !!!!!Linux系统c++的编译:

        linux系统中最常用的编译器是g++,这是来自FSF(Free Software Foundation自由软件基金会)的GNU C++编译器。在linux系统下,写好c++程序后,有头文件.h,源代码文件.cpp或.cxx,我们只需要编译源代码文件.cpp或.cxx,比如有a.cpp b.cpp两个文件,使用命令g++ a.cpp b.cpp就可以通过编译和链接两个过程(此时.h文件应该在同一个文件夹或者源代码文件中的include已经指定好了路径,比如#include “../math/aa.h”),生成a.out可执行文件,编译过程中生成的.o目标文件会被删除。如果我们希望编译的目标文件.o文件保留,那么可以使用g++ -c a.cpp b.cpp命令;然后再执行g++ a.o b.o就可以完成链接,此时.o文件不会被删除。如果修改了一部分源代码文件,而没有修改其他,那么可以使用g++已经修改的所有文件.cpp 所有没修改的文件.o 这样的命令来重新编译链接,不必编译链接所有的源代码,这样做对于大型项目来说可以简化项目的修改(make指令就是这样工作的,当然,它更复杂一些,它会自动确定依赖性)。g++ a.cpp -o b.out命令可以生成自己命名的可执行文件(-c不删除中间代码,-o生成指定名字的可执行文件)。

    下一篇:开始学习C++(1)进入C++(基础知识简介)

    相关文章

      网友评论

        本文标题:第一章 c++简介和预备知识

        本文链接:https://www.haomeiwen.com/subject/riddmctx.html