经过前面两个Review,对代码复用,类的继承概念有了进一步理解。

这里再做一次复盘,把其他概念也串联起来构成一个知识框架。

首先是类和对象的概念。对象指的是特征与技能的结合体,面向对象编程思想的好处是提高了程序的扩展性,可维护与可读性都变得更好。

类在构造时要考虑内存的动态分配问题,也有了构造函数析构函数的概念。

为了使得对象的操作更加美观,有了运算符重载的技术。

函数的重载是C++语言不同于C语言的一大特征。重载的意义在于给调用者带来了很多方便,提高程序的可读性,根据实际运行情况决定同样的方法实际调用哪个代码块。

运算符重载和类成员函数重载,实际上是C++多态技术的一种形式。多态是C++面向对象的三大特性之一,其他两个是封装继承

多态的概念实际上是建立在继承的概念之上的,与多态关系密切的一个概念是虚函数,还有就是联编(静态联编、动态联编),多态的特性还会牵扯到程序运行的额外开销。

封装的概念很好理解,一堆过程用一个函数封装起来,一堆相关变量用一个结构体封装起来

考虑到代码的复用类的复用等等。--->也就有了类的继承的概念

公有继承(is-a关系)是代码复用的其中一种机制,此外还有组合的方式进行代码复用,包含私有继承保护继承(has-a关系)等等。

此外关于代码复用还有多重继承类模板的概念。

类模板函数模板概念的延伸。

模板的好处是封装并复用了过程或算法,并使其独立于类型。

C++提供了大量的标准模板库和标准类,可以基于这些现成的代码,开发自己的程序。

此外由于类的概念中有私有成员,公有成员,保护成员。实际上这些概念是为了限制外界对类中数据访问的权限。这很好地保护了数据,但有时候也不大方便,这时候就需要友元

简单来讲友元函数一种特殊的非成员函数,它可以访问类的私有数据。

友元友元函数概念再延伸一下,也就有了友元类

此外还有内存模型、名称空间、异常、输入输出流、文件、泛型编程、容器、迭代器等概念有待继续梳理....

C++Review3_关于C++各种概念的串联与梳理的更多相关文章

  1. 时间序列算法(平稳时间序列模型,AR(p),MA(q),ARMA(p,q)模型和非平稳时间序列模型,ARIMA(p,d,q)模型)的模型以及需要的概念基础学习笔记梳理

    在做很多与时间序列有关的预测时,比如股票预测,餐厅菜品销量预测时常常会用到时间序列算法,之前在学习这方面的知识时发现这方面的知识讲解不多,所以自己对时间序列算法中的常用概念和模型进行梳理总结(但是为了 ...

  2. OAuth 2.0 概念及授权流程梳理

    本文可以转载,但请注明出处https://www.cnblogs.com/hellxz/p/oauth2_process.html OAuth2 的概念 OAuth是一个关于授权的开放网络标准,OAu ...

  3. 关于ORACLE数据库名以及数据实例名等几个重要概念

    在Oracle中有关数据库和数据库实例的几个重要概念,有时候如果理解不是很深或者对其疏忽.混淆了,还真容易搞错或弄不清其概念,下面就数据库实例名.数据库名.数据库域名.数据库服务名.全局数据库名几个概 ...

  4. 【K8s学习笔记】K8s是如何部署应用的?

    本文内容 本文致力于介绍K8s一些基础概念与串联部署应用的主体流程,使用Minikube实操 基础架构概念回顾 温故而知新,上一节[K8S学习笔记]初识K8S 及架构组件 我们学习了K8s的发展历史. ...

  5. HTTPS协议学习总结

    目录 一:什么是HTTPS协议?二:客户端与服务端如何建立HTTPS协议连接?三:证书.加密协议.信息摘要.签名算法概念解释与关系梳理四:低版本操作系统作为客户端发送HTTPS失败分析五:参考资料   ...

  6. IdentityServer4 知多少

    1. 引言 现在的应用开发层出不穷,基于浏览器的网页应用,基于微信的公众号.小程序,基于IOS.Android的App,基于Windows系统的桌面应用和UWP应用等等,这么多种类的应用,就给应用的开 ...

  7. 一文搞清到底什么是 .NET?

    现在各种 .NET 满天飞,别说新手了,连我这样的老手都差点被绕进去.到底什么是 .NET 呢?通俗易懂,什么是.NET?什么是.NET Framework?什么是.NET Core? 这篇文章好长呀 ...

  8. (oralce)pga_aggregate_target与workarea_size_policy相互关系验证

    pga_aggregate_target与workarea_size_policy相互关系验证 先放上结论: 1. 当pga_aggregate_target设置为非0, 手工设置(workarea ...

  9. 卷积神经网络CNN在自然语言处理中的应用

    卷积神经网络(Convolution Neural Network, CNN)在数字图像处理领域取得了巨大的成功,从而掀起了深度学习在自然语言处理领域(Natural Language Process ...

随机推荐

  1. 服务网关zuul----zuul中的动态刷新路由配置

    Spring Cloud实战小贴士:Zuul处理Cookie和重定向 所以解决该问题的思路也很简单,我们只需要通过设置sensitiveHeaders即可,设置方法分为两种: 全局设置: zuul.s ...

  2. 利用IDEA构建springboot应用-Controller的使用

    Controller的使用 @Controller 处理http请求   @RestController  Spring4之后新加的注解,原来返回json需要@ResponseBody配合@Contr ...

  3. CPU核数和线程数查找

    方法1: 方法2:

  4. UVa 10323 【数学】

    UVa 10323 题目:计算阶乘在10000~6227020800之间的值,不在范围对应输出Under或者Over. 分析:简单题.数论.因为13!=6227020800,7!<10000&l ...

  5. C++四:继承与派生

    C++四:继承与派生 一.概念    继承就是从先辈处得到属性和行为特性.类的继承,是指新的类从已有类的那里得到的特性.类的派生,就是指已有类产生新类的过程. 二.应用 定义为 class 派生类名: ...

  6. 字节缓冲流 ( BufferedInputStream / BufferedOutputStream)

    package com.sxt.reader; import java.io.BufferedInputStream; import java.io.BufferedOutputStream; imp ...

  7. Calendar类实现当前日期的日历

    package com.sxt.home1; import java.text.DateFormat; import java.text.ParseException; import java.tex ...

  8. @codeforces - 618G@ Combining Slimes

    目录 @description@ @solution@ @part - 0@ @part - 1@ @part - 2@ @part - 3@ @accepted code@ @details@ @d ...

  9. @总结 - 7@ 生成树计数 —— matrix - tree 定理(矩阵树定理)与 prüfer 序列

    目录 @0 - 参考资料@ @0.5 - 你所需要了解的线性代数知识@ @1 - 矩阵树定理主体@ @证明 part - 1@ @证明 part - 2@ @证明 part - 3@ @证明 part ...

  10. js递归遍历树结构(tree)

    如图: 代码: let datas = [] //是一个树结构的数据 setName(datas){ //遍历树 获取id数组 for(var i in datas){ this.expandedKe ...