首页 > 编程语言 >1. C++编程简介

1. C++编程简介

时间:2023-06-03 13:34:44浏览次数:42  
标签:语言 面向对象 简介 编程 C++ class 标准 我们

勿在浮沙筑高台

课程:C++ 面向对象程序设计。

面向对象,它是一个观念。那么我们要用这种观念来写程序,需要面向对象的语言,而 C++ 就是一个支持面向对象观念的一种语言。

上这门课你该具备什么样的基础呢?只要你有这些基础就够了,你曾经学过某一种 procedure language,最好是 C 语言,但是其他语言也可以。这个 C++ 语言,从名称就可以知道是建构在 C 之上的,所以我们后面谈到的一些术语,或者一些关键词,会跟 C 有关,所以虽然在过程式语言(procedure language),很多观念是共通的,但是如果你学过 c 语言的话,你对于我所讲的东西会更快的,一下子就融入。那么既然你学过这种结构式的,过程式的语言,当然也就表示你已经懂了这些东西。你懂得什么叫变量;你懂得什么叫类型,类型比如说整数,浮点数,字符,结构,这种就是类型;你懂得什么是作用域,像以前我们写一个函数,函数有大括号,大括号里头,变数在这里头的生命,这个就是它的作用域;你也已经懂得了循环(loop),在 C 里面 while loop, for loop; 你也应该已经懂得了流程控制,你怎么样在执行到一个地方的时候,把你的流程拉到另外一个地方去,你应该已经懂得 if else 或者switch case。假设你已经有了这些基础,我们就可以进行这一门课程了,那当然这就表示你已经写过程序了,所以你应该也已经知道了,一个程序它是需要编译,需要链接才能够被执行的。而且你也已经知道了,怎么样去编译和链接一个程序。现在的软件开发工具很发达,所以有很多的集成环境,不管你过去是用一种比较比较低阶的,用命令行的模式和形式去做去编译链接,或者是你在集成环境底下去建立一个程序,只要你曾经有过这样的经验就可以,如果你都没有这些经验的话,我们在课程的最后,我也会附几张投影片来引导你,选一个平台来引导你来做这些事情。

那么我们这门课程的目标是什么呢,希望我们能够培养出正规的,大气的一种编程习惯,虽然也许我们写的代码是小小的,毕竟一开始嘛我给各位的范例也不是太大,但是在即使是一个小的程序,我们也希望一起手一出手,就是有大家风范的一种正规的写法,所以在我们的目标啊,我的目标要引导各位以良好的方式来写 C++ 的 class ,那这里为什么它谈论 class 呢,因为 C++ 代码里面的每一个单元,最重要的每一个单元就是一个 class ,所以这边就出现了这个字眼。

而 class 有分为两个很经典的呃一的分类,这也是我们后面马上就要讲到的,一种 class 是带有 pointer,一种 class 是不带 pointer,这两种在设计上呢在思考上了截然不同,那这一种对于单一 class 的设计,我们又有一个名字叫做 object base,object base program,那相对应的呢面向对象叫叫做 object oriented ,如果你写好几个 class ,彼此之间有关联,有某种关联的话,我们就可以说是object oriented的面向对象,所以当然是我们首先要培养好的,对单一 class 的正规的好的习惯写法,然后我们才可以扩大,好几个 class 之间,好几个类之间,他们彼此有什么样的关系,所以整个课程呢是分为两大类,一个是基于对象,一个是面向对象。这是我们的目标。

这个课程上完之后,你可以下载这些东西,我给大家三个例子,一个是这是我们在高中数学的都学过复数,我要把这个数学里面的复数,搬到我们这个语言上来,把它实现出来啊,这是 complex,所以每一个例子都有一个头文件,和一个实现文件,这是第一个例子。那第二个例子呢,因为刚刚我有提过 class 的经典分类,一种是不带指针的,一种是带指针的,所以这里就有两个例子了,那第三个例子呢,oop 这个就谈到开始发展很多的 class,彼此有关联的话,这是第三部分,我们可以啊,各位可以下载到这些文件,而我后面的对于语言设计的解说呢,也就以这三个例子的内容来解说。

很快的谈一下 C++ 的历史,那么这个既然叫 C++ ,它一定是base on,他一定是建立在c之上,而是c a b c c排在第三,前面有没有b呢,真的有一个b语言啊,1969年,那前面有没有a呢,呃我没有查到有a开头的a大,但是好像没有一个叫a的语言好,所以b语言有c语言有1972年,然后 C++ 语言是在1983年,他早期不叫 C++ ,早期叫做c with class ,所以从这名称就更清楚了啊,他是以c语言为基础,并且带有 class class ,就是我们学习的重点啊,面向对象语言呢不是只有 C++, C++ 可能是第一个最大规模的,被被被全世界广泛接受的语言,在它的后面还有很有名的啊,也很多人在使用的是java语言,跟 c# 以及其他的语言,那事实上这些语言呢嗯精神都一样,关键字也都差不多,所以我们学了一种语言,基本上也就可以了解另外的两三种语言了,当然它细节会有所不同,所以这门课程呢呃也很适合你已经了解其呃,比如说java或 c# 其他语言,但是你想你想到 C++ 这边来弄得更清楚一些,也适合这样的人,这是 C++ 的历史。

我们这张投影片来跟大家介绍 C++ 的演化,也就是说这个语言它有什么样的版本,他这个出现的时间其实刚刚各位已经看到了,1983年就有了,但是它真正正规化变成有一个国际规范呢,是在1998年,我们叫 C++ 九八,也就是一点, C++ 一11,2011年才出现二点,这中间还有一些小的版本,这里有02003年有一个t r y t r one,叫做technical report one,那2014年呢又有一个小版本,而我们现在这门课所要讲的,以及目前大部分在业界,大部分的程序员所使用的呢,其实大家不必太在乎版本,而我现在要讲的是,大部分的程序员所用的几乎都是 C++ 98,2011的这个版本呢出现了很多新的关键字,很多新的概念,在标准库上也出现了很多的新的工具,新的东西给大家用啊,也许因为太新了,毕竟现在才2015啊,2011呢这中间才4年啊,所以使用的人使用这些新特性的人并不是太多,而我们这门课程讲的都是非常根本的东西啊,是从 C++ 98 就有了,所以大家这边只是给大家一个概念,说这个语言在正规化的发展上面呢有这个进程。

我们看到下面这边有一张图,我们学习 C++ 可以分为语言的部分,还有标准库的部分,现在几乎学任何一个语言都是这样子,要把这两个分开来。在比较早期,也许在 C 的时代呢,大家很关注的是语言的部分,那当然了,其实你也脱不开标准库的部分,C 也有它的标准库。所以我现在要传传达的概念是,像现在语言越来越复杂,所以他们的标准库,所给各位的东西也是越来越多,那使用这些这些标准库,也是一个非常非常重要的事情。我们现在 在这门课程上,主要谈语言,我们用到标准库的部分,只有最简单的的一些东西的输出,那事实上标准库是非常庞大,非常有用的。可以说这么一句话,如果你是一个 C++ programmer程序员,但是你不怎么去用标准库的话,也不能算是一个合格的、有生产力的 C++ 程序员,你可能不能算是,当然这个要到各位我们进入业在学生时代啊,或者进入业界,你开始大量的写比较大型的语言,你就会知道标准库的重要性。

课程开始之前,我想跟大家介绍一些很经典的书籍,对大家会有帮助的,在语言的部分,这两本书可能是全世界卖的最好的读者最多的 C++ 的百科全书籍,百科全书等级的这种语言书。 C++ 的书籍实在太多太多了,通常我们学一个东西都会去想,要知道这个某某之父啊, C++ 之父他所写的书,那就是右边这本 C++ programing language 这边有个标题,写 C++ 11,就是它涵盖了最新的标准规格,那这个是前一两年出来的啊,当然是要在2011之后才出来的,目前最新版本是第四版,第四版,另外这本书呢是 C++ 的第一个编译器的作者,所写的书籍,所以他也有相当的呃,这个这个说服力是一个经典的书籍,这个书已经到了第五版啊,这两本书现在打出来的封面,都是目前最新的版本,所以它当然也涵盖了 C++ 11,刚刚不是说还有一个 2014 吗,2014是一个小小改版,所以最重要大家谈论就是1998的,和2011的这个封面啊,我也是跟大家一样,在这边努力的找,也没有找到,说它是涵盖2011呢没找到,然后我发现这个封面这边有个一一哈哈,其实有这么大的一个字,告诉大家,这是涵盖了2011年哦,其实这边有个小字了,2011 C++ 一等的好,这是语言的部分。

那么我们其实学了语言之后呢,很希望得到专家的建议,在这个课程里面呢,我也扮演这种角色,告诉你什么东西该写什么东西,怎么样写比较好,但毕竟我们在课程里面,涵盖的是非常还算是非常小的一部分,你呀还是需要更多的这方面的信息,这边有一本书可以给大家带来很好的帮助,effective C++ 这个书,目前这个是最新版本,就是第三版,它里面以条款的方式告诉你什么该做,什么不该做,你如果做什么动作会影响什么样的效率啊,所以这是专家给给我们的心得,给我们的经验非常好啊,右边这个人是他的中文版。

刚刚提到语言 C++ 语言除了语法本身好,语法以及它的语义,另外呢有一个很重要的是标准库,标准库现在是很庞大,所以我们也需要好的书籍来帮助学习,我也看过很多很多的这方面的书,我很推荐这一本叫做 C++ standard library,就是标准库,这个也是标题,这个封面上告诉各位了,这涵盖了 C++ 一11,那么再深入下去,对于初学者来讲,这条路已经很遥远了啊,再深入下去的话,深入到什么,如果你有兴趣想要看看标准库的源代码,那这种书就很少了啊,就是很很深的部分,有这么一本书,stl源码剖析s t l啊,我现在就不解释太多,他其实就是标准库的前身,现在你可以想象,标准库里面大概百分之七八十啊,或者说八九十也可以,这在以前叫做标准,叫做s t l,叫standard temperate library的标准模板库,其实就是现在的标准库,简单的话可以这么讲,好书籍非常多啊,这样子只讲了只介绍了这六本,6本呢肯定有遗珠之憾,主要就是这是最有名的呃,或者说某些主题很少见啊,这像刚刚那个源码剖析啊,所以跟大家做一个推荐。

总结:

基础

  • 最好有 c 语言基础;可以编译和链接一个程序

目标

  • 培养出正规的、大气的一种编程习惯
  • 以良好的方式写 C++ 的 class

class 分类

  • C++ class
    • class without pointer members
      • Complex
    • class with pointer members
      • String

基于对象和面向对象

  • 基于对象是 单一 class
  • 面向对象是 几个 class ,彼此之间有关联
    • 继承 (inheritance)
    • 复合 (composition)
    • 委托 (delegation)

三个学习的例子

  • 基于对象
    • 不带指针的 class
      • 复数
    • 带指针的 class
      • 字符串
  • 面向对象
    • OOP

C++ 的历史

  • C 语言 (1972)
  • C++ 语言 (1983)
    • C with Class -> C++

C++ 的演化

  • C++ 98 (1.0)
  • C++ 03 (TR1, Technical Report 1) 小版本
  • C++ 11 (2.0)
  • C++ 14 小版本

学习 C++ 分为哪些部分

  • 语言(本课程主讲)
  • 标准库(非常重要,代表生产力)

经典书籍

百科全书等级

drawing
  • C++ primer 第五版 是 C++ 的第一个编译器的作者所写的书籍。涵盖 C++ 11。
  • The C++ Programming Language 第四版 C++ 之父写的

专家的建议

drawing
  • Effective C++ 第三版,右边是 侯捷翻译的 中文版

标准库

drawing
  • C++ standard library
  • STL 源码剖析

标签:语言,面向对象,简介,编程,C++,class,标准,我们
From: https://www.cnblogs.com/odesey/p/17453851.html

相关文章

  • 分布式医疗云平台(项目功能简介截图)【系统管理(科室管理、用户管理、角色管理、菜单管理
    项目功能截图1.系统管理 1.1.科室管理 1.2、用户管理1.3、角色管理 1.4、菜单管理  1.5、字典管理1.6、通知公告管理 1.7、登陆日志管理 1.8、操作日志管理 1.9、检查费用设置 1.10,挂号费用设置 项目功能截图1.系统管理 1.1.科室管理1.1.1、科室查询 1.1.2、科室添加......
  • 零代码编程:用ChatGPT将PDF文件的表格批量转为Excel表格
    电脑中有几百个PDF文件,文件内容格式一致,每个PDF文件第一页是一个表格。想把这几百个PDF文件里面的表格都提取出来,转为excel表,该怎么办?打开ChatGPT(一定要用GPT4,编程能力很强。相比之下,gpt3.5弱太多了),输入提示词如下:d盘有一个文件夹:guanlianjiaoyi,里面有很多pdf文件;你的任务是写一个......
  • Visual C++ 6.0环境开发PACS影像系统的技术指标和精准算法
    1.技术指标图像文件格式:DCM、JPG、BMP、TIF等可支持显示属性设置:24/32位真彩;256位色(黑白)可支持监视器分辨率:1024﹡768;1280﹡1024;1600﹡1280;1280﹡1600(立式);1536﹡2048(立式);2560﹡2048(立式)图像分辨率:1024﹡1024;512﹡512;256﹡256静态或动态操作平台windowsxpPACS系统-图像处理高级精准算法对图像......
  • C语言编程-共用体
    共用体是一种特殊的数据类型,允许您在相同的内存位置存储不同的数据类型。您可以定义一个带有多成员的共用体,但是任何时候只能有一个成员带有值。共用体提供了一种使用相同的内存位置的有效方式。定义共用体为了定义共用体,您必须使用union语句,方式与定义结构类似。union语句定义......
  • Google Java编程风格指南
    作者:Hawstein目录前言源文件基础源文件结构格式命名约定编程实践Javadoc后记前言这份文档是GoogleJava编程风格规范的完整定义。当且仅当一个Java源文件符合此文档中的规则,我们才认为它符合Google的Java编程风格。与其它的编程风格指南一样,这里所讨论的不仅仅是编码格......
  • C++面向对象
    文章目录C++类&对象C++类定义定义C++对象访问数据成员类&对象\详解类成员函数类访问修饰符构造函数&析构函数C++拷贝构造函数C++友元函数C++内联函数C++中的this指针C++中指向类的指针C++类的静态成员继承基类&派生类访问控制和集成继承类型多继承继承顺序重载运算符和重载函数C++......
  • 第一章 Web MVC简介
    WebMVC简介1.1、Web开发中的请求-响应模型: 在Web世界里,具体步骤如下:1、 Web浏览器(如IE)发起请求,如访问http://sishuok.com2、 Web服务器(如Tomcat)接收请求,处理请求(比如用户新增,则将把用户保存一下),最后产生响应(一般为html)。3、web服务器处理完成后,返回内容给web客户端(一般就是我......
  • C++逆向分析——构造函数和析构函数
    构造函数与析构函数构造函数structStudent{inta;intb;Student(){printf("Look.");}voidInit(inta,intb){this->a=a;this->b=b;}};如上代码中,我们发现了存在一个函数,这个函数没有返回类型并且与结构体名称一样,那这段函数在什么时候执......
  • Mac在VSCode中搭建CC++环境
    Mac在VSCode中搭建C/C++环境https://www.jianshu.com/p/050fa455bc74利用VScode和cmake编译构建C++工程代码https://m.oldpan.me/archives/use-vscode-cmake-tools-build-projectVSCode开发C在Mac的配置https://www.jianshu.com/p/014e6e2c97e2选择C/Cpp:EditConfiguration......
  • 曲线艺术编程 coding curves 第三章 弧,圆,椭圆(ARCS, CIRCLES, ELLIPSES)
    第三章弧,圆,椭圆(TRIGCURVES)原作:KeithPetershttps://www.bit-101.com/blog/2022/11/coding-curves/译者:池中物王二狗(sheldon)blog:http://cnblogs.com/willian/源码:github:https://github.com/willian12345/coding-curves曲线艺术编程系列第三章在这一篇中我......