《c++101条建议》学习笔记——第一章快速入门

初二八九 初二八九     2022-08-02     692

关键词:

1.C++程序组成:a.编译指示,由#开始,不由分号结束。只是影响编译过程。b.声明语句,影响编译过程,编译结果中并不会生成对应的指令。只是告诉编译器一些信息。c.可执行过程语句,生成对应的指令。包括:简单语句、复合语句、控制语句、try语句等。d.函数(返回类型,函数名称,参数列表,函数体)。函数名称说明函数的功能,返回值返回函数执行后的输出结果,形式参数表示函数的输入或输出,函数体决定函数的执行过程。

2.

面向过程:分析解决问题所需要的步骤,用函数把这些步骤依次实现。

面向对象:把构成问题的事务分解成各个对象,建立对象目的,不是完成一个步骤,而是描述事务在解决整个问题步骤中的行为。以对象为基础,以事件和消息来驱动对象执行处理的程序设计技术。具有抽象、封装、继承、多态性。

两者是从思考问题的角度上区分的。例如:一辆汽车,面向过程的思想去思考,就是:如何启动汽车,起步,加速,刹车,熄火等一个个操作,而汽车在这里不是我们所关心的。而面向对象则以汽车为对象,一切由汽车开始,以上的可用操作,即功能是汽车这个对象本身所具有的,做任何操作只需要告诉汽车即可。

C是面向过程的,其最重要的特点是函数,通过main来调用各个函数,程序运行顺序都是程序事先决定好的。

C++面向对象,主要特点是类,main进入,定义一些类对象,并执行类方法。过程的概念被淡化了,以对象驱动程序运行。

面向过程一般采用自上而下的设计方法,一开始就设计全面的,自上而下的整个程序的架构,因此要求程序设计者对问题有全买你的了解。

面向对象是一种自下而上的设计方法,从问题的一部分着手,一点一点的构建整个程序。面向对象设计以数据为中心,类作为表现数据的工具,成为划分程序的基本单位。面向对象有以下几个重要特点:

1、客观世界由对象组成;2、对象抽象为类;3、类与类之间存在继承关系;4、对象之间通过消息传递而彼此相连。

面向过程优点和缺点:

优点:性能比面向对象高,因为类调用时需要实例化,开销比较大,比较消耗资源;所以一般性能要求重要的都采用面向过程开发,比如:单片机、嵌入式、linux等等

缺点:没有面向对象容易维护,复用,扩展。

 

面向对象优点和缺点:

优点:复用,扩展,维护容易。因为有封装,继承,多态的特性,可以设计出低耦合的系统,使得系统更加灵活,易于维护。

缺点:性能比面向过程低。

当前面向对象最有前途的应用领域 有:

1.实时系统;

2.仿真和建模;

3.面向对象数据库;

4.超文本、超媒体和扩展文本;

5.AI和专家系统;

6.神经网络和并行程序设计;

7.决策支持和办公自动化系统;

8.CIM/CAM/CAD系统;

面向对象程序设计定义:面向对象程序设计是一种方法,这种方法为数据和函数提供共同的独立内存空间,这些数据和函数可以作为模板以便在需要的时候创建类似的拷贝。这样的程序设计方法成为面向对象程序设计。

从定义上看,一个对象被认为是一个独立的内存空间,在这个空间上存储着数据和操作这个数据的一组操作。因为内存区间是独立的,所以对象可以不经过修改就应用于多个不同的程序。

面向对象:注重数据,不注重过程,程序被划分为所谓的对象。

     数据结构为表现对象的 特性而设计

     数据被隐藏起来,不能为外部函数访问

     新的数据和函数在需要的时候可以轻易的添加进来

     遵循自下而上(bottom-up)的设计方法

 

3.C++使用C语言:

C++和C语言具有不同的编译和链接方式,C语言编译器编译函数不带函数的类型和作用域信息,只包含函数符号名字;而C++编译器为了实现函数的重载,在编译时带上了函数的类型和作用域。

C编译器不会检查参数和返回值,只要找到函数对应的符号就可以连接成功,实现调用。而在强调安全的C++中,编译器会检查参数类型和作用域信息,函数原型会编译成_Z_Func_int_int这样的符号(也正是这种机制为函数重载的实现提供了必要的支持)。在链接过程中,C++链接器会在函数原先所在模块的生成的目标文件中查找_Z_Func_int_int这样的符号。

extern "C"的作用是告诉C++编译器在查找调用链接符号时采用C语言方式,让编译器寻找_Func而不是_Z_Func_int_int

4.C++比C加了什么

主要表现在面向对象和泛型编程两部分。另外,也有对基础方面如函数、变量类型等也进行了完善和添加。

(1)bool变量是C++的内置变量类型,一般占1个字节。C语言在C99标准之前没有bool变量,想要使用的话只有自己定义:typedef enum{false = 0, true = 1}bool;

(2)引用是C++对C的一个新引入的重要扩充,它是被绑定变量或对象的别名。

(3)C++支持函数重载、内联,同时还支持函数的引用调用。

(4)C++是面向对象语言,这是区分与C的最根本的地方——C是面向过程语言。

面向对象编程的关键思想是多态性。在C++中,通过基类的引用或指针调用虚拟函数时,发生动态绑定。这是C++中多态的基础。C++多态包括两种:运行时多态,编译时多态。编译多态是编译阶段根据参数确定与哪个同名函数联系;运行时多态是在程序运行阶段才根据产生的信息确定需要调用那个同名的函数。C++通过函数重载和运算符重载实现编译时多态,通过继承和虚函数来实现多态。面向对象的多态性是运行时多态,后续将要讲述的泛型编程即编译时多态。

泛型编程是C++中的一个概念,泛型编程依赖的多态是上下文中的编程使多态,主要是通过模板机制来构建一类操作类似,但数据不同的程序,其中有函数模板和类模板。

泛型的地一个好处是编译时严格类型检查。这是集合框架最重要的特点。此外,泛型消除了绝大多数的类型转换。

泛型:它把数据类型作为一种参数传递进来。

template <class T> class Stack

{

public:

  …………

  …………

  T Pop(void);

  bool Push(T Elem);

private:

  T m_tData[1000];

  int m_nDataPtr;

}

template<class T> CStack<T>::CStack(void)

{

  …………

  …………

}

 

template<class T>CStack<T>::Push(T Elem)

{

  …………

  …………

}

由此可以看出CStack<T>模板类传入的不同数据类型,可以生成与此对应的不同类型的CStack堆栈类类型。这些工作都是在编译过程中实现的,即编译时多态。

 

javascript学习指南之第一章hellojavascript!最基础的javascript入门

JavaScript学习指南笔记第一章HelloJavaScript!JavaScript简介JavaScript属于网络端的脚本语言。JavaScript被数百万计的网页用来改进设计、验证表单、检测浏览器、创建cookies,以及更多的应用。能够与网页进行完美的集成。、目前在因特... 查看详情

c语言笔记初级篇第一章:c语言快速入门及注意事项

(1)第一个C语言程序A:利用vs2010写C语言程序1:按以下步骤新建工程2:添加源文件,“.c”文件B:第一个C语言代码1:以下是基本的C语言程序2:由于没有设置连接器,所以打印结果没有显... 查看详情

c语言笔记初级篇第一章:c语言快速入门及注意事项

(1)第一个C语言程序A:利用vs2010写C语言程序1:按以下步骤新建工程2:添加源文件,“.c”文件B:第一个C语言代码1:以下是基本的C语言程序2:由于没有设置连接器,所以打印结果没有显... 查看详情

第一章:学习笔记说明!

...01;这是一个基于海凌科HLK-7621千兆路由开发板的OpenWrt系统学习笔记,博文部分资料代码来源于网络,个整理编写仅用于学习与记录,希望与大家共同学习 查看详情

c++widgets编程(《qtcreator快速入门》第3版学习笔记)

《QtCreator快速入门》讲解了经典的C++Widgets编程,是Qt最基础和最核心的内容,《Qt5编程入门》讲解了QML语言、QtQuick编程和移动开发,《Qt及QtQuick开发实战精解》讲解了C++Widgets综合实例程序和QtQuick综合实例程序 查看详情

《数据库设计入门经典》读书笔记——第一章:数据库建模的过去与现在

《数据库设计入门经典》,现在学习的是这本书,虽然以前就看过类似的书,可能由于之前经验不足,书中说的某些东西只消化了一部分,现在重温一边好懂多了。所以说读第一遍读不懂不要紧,过个一年半载的再来读,还是会... 查看详情

androidstudio开发知识总结,零基础入门学习(建议收藏)

积一时之跬步,臻千里之遥程千里的路程都是从一步一步开始走的,无边无际的江河都是从一条条小溪汇聚而成的!「凡事不是一蹴而就的」。一分耕耘,一分收获希望在这里你们能收获到你们想要的。「共勉」!Android... 查看详情

社区共读《python编程从入门到实践》第一天阅读建议(代码片段)

文章目录《Python编程从入门到实践》第一天阅读建议第一章阅读建议第二章阅读建议共读计划已经开启,欢迎随时加入【78技术人社群】这本书分为20个章节,阅读时长建议控制在2周内完成,效果最佳。《Python编程从... 查看详情

社区共读《python编程从入门到实践》第一天阅读建议(代码片段)

文章目录《Python编程从入门到实践》第一天阅读建议第一章阅读建议第二章阅读建议共读计划已经开启,欢迎随时加入【78技术人社群】这本书分为20个章节,阅读时长建议控制在2周内完成,效果最佳。《Python编程从... 查看详情

《python深度学习》第一章笔记

《Python深度学习》第一章笔记1.1人工智能、机器学习、深度学习人工智能机器学习深度学习深度学习的工作原理1.2深度学习之前:机器学习简史概率建模早期神经网络核方法决策树、随机森林与梯度提升机回到神经网络1.1人... 查看详情

《python深度学习》第一章读书笔记

《Python深度学习》读书笔记第一章什么是深度学习1.1人工智能、机器学习与深度学习人工智能的简洁定义:努力将通常由人类完成的智力任务自动化。机器学习与数理统计密切相关。机器学习(尤其是深度学习)呈现出相对较少的数... 查看详情

deeplearning(bengio)第一章读书笔记

一些定义/理解:这一块的东西还是建议看书,书上解释得很清楚,单独提出来可能很难说明白是啥。知识谱图:力求将关于世界的知识用形式化的语言进行硬编码,计算机可以通过这些形式化语言自动地使用逻辑推理规则来理... 查看详情

《机器学习》读书笔记-第一章引言

...作者TomMitchell,卡内基梅隆大学。 第一章引言 1.1学习问题的标准描述: 机器学习的定义:如果一个计算机程序针对某类任务T的用P衡量的性能根据经验E来自我完善,那么我们称这个计算机程序在从E中学习,针对某类... 查看详情

读阮一峰老师es6入门笔记——第一章

  鉴于最近用vuejs框架开发项目,其中有很多涉及到es6语法不太理解所以便认真地读了一下这本书。  地址:http://es6.ruanyifeng.com/#README   第一章:let,const命令以及块级作用域  es6新增了let和const这两个变量的声明关... 查看详情

《深入理解计算机系统》第一章学习笔记

信息就是位+上下文源程序:就是一个由0和1组合的位(bit)序列,8位组成一字(byte),每个字节表示某个文本字符。系统中所有的信息——包括磁盘文件、存储器中的程序、存储器中存放的用户数据以及网络上传送的数据,都... 查看详情

机器学习笔记第一章:绪论

主要符号表:$x$标量$mathit{x}$向量X变量集$mathbf{A}$矩阵$mathbf{I}$单位阵$chi$样本空间或状态空间  $D$数据样本  $H$假设集$varepsilon$  学习算法$left| cdot ight|_p$$L_p$范数,缺省为2$supleft(cdot ig 查看详情

tapestry3笔记--tapestry初探,《tapestryinaction》第一章学习笔记

...很久终于找到一本名为《tapestryinaction》的工具书,以下学习笔记均以此书为参考。正文---tapestry初探tapestryinaction第一章学习笔记tapestry是一款以组件为核心的开发框架,组件就向一个黑盒子,我们无 查看详情

latex学习笔记第一章latex须知

本学习笔记全部从http://www.latexstudio.net/archives/6058抽取总结而来。第一章LATEX须知1.1 概述1.1.1TEX  TEX是高德纳开发的、以排版文字和数学公式为目的的一个计算机软件。1.1.2LATEX  LATEX为TEX基础上的一套格式,令作者能够使... 查看详情