(自用)适时小结(一)

devtools/2024/12/22 23:58:45/

前言

        每过一段时间,总结一下学习方面的感悟,可能和编程有关,可能和学习方法有关,也可能对前面学过东西的回顾,或者单纯表达一些想法.

关于C++

        C++的学习至少要经过两个阶段:基础学习和熟练掌握.常见的问题:学习的过程中会产生一些迷茫,C++到底能干什么? .C++的内容不少,学习难度也不低,如果花了大量时间和精力,却看不见效果,多少会觉得有点焦虑.这个问题可以放到其他语言的学习中一样存在,你问学了C能干什么,学了java能干什么?C比C++还要底层一点.java和python底层还是用C++写的,这样理解多少会给一点安慰.重点是编程语言本质上是用来处理数据的工具,而这个处理数据还没有想象中那么高大上---基本上编程不会叫人去写微积分,那属于科学计算的范畴,有专门人写库函数.从这里可以引出科学计算是C++其中一个方向(笔者猜想的,可能不是用C++写的,但可以提供给C++编译器使用).要体现一门语言的作用,得看他用到什么样的领域.笔者对此了解的也不多,只知道Qt是C++写的,而且强调是以C++类库的形式出现.学了C++的语法,再用Qt应该问题不大.Qt主要用来写windows桌面端.以此类推,C++也有有其他的方向.

        不管是什么方向,缺的是数据到硬件这个部分.当数据和硬件联系起来,就可以做出效果来了.这里的数据是指"纯数据",如果用类对象来表示的话,他是没有对象函数的.或者按照<C++ Prime Plus> 6th Edition(以下称"本书")的默认规则,应使用struct结构体定义.

关于函数

        函数作为程序的基本单元,在类定义中又称为"方法".程序=连续调用函数 .不管在看别人的代码还是看自己写的代码,对不适应一眼看过去密密麻麻的初学者来说,最容易的切入点就是:这一步是函数的定义,还是函数的调用.看着看着就知道怎么读代码了.程序不是在编写函数就是在调用函数,函数的内部可以调用能被其看见的函数.

        函数的含义是:我想做一件事.这件事一般用函数名称表现.在面向过程的函数和面向对象的函数设计时,会有一点区别.举个例子:想打印list中的数据.假设面向过程用的C语言中,list是个结构,传入的&li是结构指针.面向对象的C++中的list是容器

//伪代码,面向过程的list数据打印
void print_list(list* li);        //函数原型
print_list(&li);                  //函数调用
//伪代码,面向对象的list数据打印
void print();                     //函数原型,list中定义
list<DataType> ld;                //list对象生成
ld.print();                       //函数调用

        面向对象的函数一般是全局函数,要做好区分,需要详细描述.print_list大致可以让使用者明白这是打印一个结构体内的数据.而面向对象的print由对象调用,对象可以把数据的类型分开.此外函数使用的参数,可以由属性提供,所以也不需要传数据进去.

        做这件事需要用到哪些数据,或者需要让哪些数据发生什么样的变化?由形参类型和形参变量决定.变量参与函数的路径:变量→形参变量→函数内表达式.

        函数内部应该怎么写,根据需求来写.是否需要返回值,也根据需要来.如果需要查看调用程序是否成功,使用谓词.

        函数指针是一种数据类型,用返回值类型和形参列表描述,指向符合描述的函数.函数指针用作函数参数时,起到"承上启下"的作用(参数和返回值类型已被确定,逻辑待定)参考函数符.笔者最初学习没有领会函数指针是干什么的,但在理解函数符后,发现函数指针很有用.站在面向对象的角度,函数指针是满足某个需求的接口,函数是实现,函数指针和函数的关系也是一种抽象与实现分离

        还有一点题外话,印象中写代码是很灵活的,但函数的编写是比较"死板"的.代码的灵活性要在程序结构,设计模式上面去体现.如果给函数定义一套书写规则和命名规则,两个程序员写相同的函数几乎不会有什么差别.代码的灵活性不由(指定编写规则的)函数体现.

关于类

        如果简单理解什么是类的话:"面向对象语言中的函数"---自创概念.

        类提供了一种抽象模型,"我是谁"---类名称描述;"我有什么"---属性描述;"我能干什么"---对象方法描述.除了类是表达纯数据以外(没有对象方法,上面的struct),类的核心是使用对象方法---"我能用什么来做什么".

        类是可以做一切事情的虚拟个体,只要能建立一个满足需要的虚拟的"我".这种结构写出来的程序,上面的类只起调度作用,具体功能由被使用的类对象实现.他适合于模块固定的程序,例如汽车是成熟产品,假设有发动机,底盘,轮胎,转向,外饰这几部分组成,并且没有增加了.

//汽车类
class Car{Motro motor;Chassis chassis;vector<Tire> tires;        //4个轮胎Steeling steeling;         //转向
}

        汽车启动等于发动机启动.每个"部件"由继承扩展.

        以"个体"的思路去建立程序,对程序员来说是好事,他让类的建立变得清晰.

        

         


http://www.ppmy.cn/devtools/103254.html

相关文章

Redis过期键监听

在 Redis 中&#xff0c;为了监听过期键事件&#xff0c;需要使用 Redis 的 Keyspace Notifications 功能。这一功能允许客户端订阅某些事件的发生&#xff0c;比如键过期、键删除等。 启用过期键监听 在 Redis 的配置文件 redis.conf 中&#xff0c;确保配置项 notify-keysp…

nginx 负载均衡详解与实现方法案例

目录 前言一、Nginx 负载均衡的工作原理二、Nginx 负载均衡的算法1.轮询(Round Robin):2.最少连接数(Least Connections):3.IP 哈希(IP Hash):4.URL 哈希(URL Hash):5.加权轮询(Weighted Round Robin):3、Nginx 负载均衡的其他配置4、 总结前言 Nginx 负载均衡…

Ubuntu 18.04升级gclibc为2.28版本

一、查看系统支持的 GLIBC 版本号 ​strings /lib/x86_64-linux-gnu/libc.so.6 | grep GLIBC_出现以下&#xff0c;说明到2.27版本&#xff0c;没有2.28版本&#xff0c;所以我们需要手动安装 GLIBC_2.2.5 GLIBC_2.2.6 GLIBC_2.3 GLIBC_2.3.2 GLIBC_2.3.3 GLIBC_2.3.4 GLIBC_…

C++指南-标准库,数学库,数据结构

C标准库概览 C标准库是C语言的组成部分&#xff0c;提供了大量的工具和函数&#xff0c;以支持各种编程任务。 输入输出流 输入输出流类 std::iostream&#xff1a;基础输入输出流类。 std::istream&#xff1a;处理输入流的抽象类。 std::ostream&#xff1a;处理输出流的…

microsoft微软excel或WPS表格打开vivado逻辑分析仪ILA保存的csv文件,自动转换科学计数法损失精度的bug

问题 vivado的逻辑分析仪ILA&#xff0c;可以方便的把数据导出成CSV(Comma-Separated Values)文件&#xff0c;实际是逗号作为分隔符的数据文件。 导出数据文件用文本编辑器打开&#xff0c;第74行有如下数据&#xff1a; 但是使用excel打开这个csv文件&#xff0c;则这个数…

OpenCV小练习:身份证号码识别

目标&#xff1a;针对一张身份证照片&#xff0c;把身份证号码识别出来&#xff08;转成数字或字符串&#xff09;。 实现思路&#xff1a;需要将目标拆分成两个子任务&#xff1a;(1) 把身份证号码区域从整张图片中检测/裁剪出来&#xff1b;(2) 将图片中的数字转化成文字。第…

灵神算法题单——定长滑动窗口(进阶)

2134. 最少交换次数来组合所有的 1 II 断环成链滑动窗口 思路先算出数组中1有多少&#xff0c;然后看这么长的窗口里0最少是多少&#xff0c;此时即为最少交换次数。 首先遍历算出1的数量k&#xff0c;然后用Insert拼接数组&#xff0c;从而实现循环。 然后双指针遍历数组&…

【区块链在供应链管理中的应用】区块链在供应链管理中的应用与案例分析

区块链在供应链管理中的应用 区块链在供应链管理中的应用与案例分析 引言 供应链管理&#xff08;SCM&#xff09;是企业运营的核心环节之一&#xff0c;涉及从原材料采购到产品交付给消费者的整个过程。然而&#xff0c;传统供应链管理面临许多挑战&#xff0c;如信息不对称…