(自用)适时小结(一)

前言

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

关于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;         //转向
}

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

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

        

         

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

jllws1

你的鼓励是我创作的动力,谢谢

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值