大二上学期,开始学习c++,数据结构等,在学C++时被那个构造函数,拷贝构造函数,析构函数,类的抽象搞晕了。开始时很不理解类,明明很简单的一个程序,如一个Clock时钟类我觉得好怪啊,为什么要这么麻烦,不就是定义几个带参数,返回值的函数吗?再定义一个数据结构存储这些数据类型吗?偏要弄的这样麻烦来个什么的class,很不理解,等看到后面的继承,多态等,就可以感觉到写成类是有必要。这是一种面向对象思想,因为这种思想:与人类习惯的思维方法一致,数据与函数放在一个类中(抽象 封装),时钟clock类,它有自己的数据,时分秒,也有自己的操作,可以被设置时间(通过一个带参数的接口);稳定性好,传统的软件开发(如C)以算法为核心,开发过程基于功能分析和分解,面向对象基于构造问题领域的对象模型,以对象为中心构造软件系统,所以当对系统的功能需求变化时并不会引起软件结构的整体变化,往往仅需要作一些局部性的修改(继承);可重用性好,这一点就不说了,用过的人都知道;轻易开发大型的软件产品,这一点是书上说的,没有做过大型的软件所以我不知道但可以感受到;可维护性好,类是理想的模块机制,修改一个类通常很少会牵扯到其他类。好了类的好处知道了,但是为什么又要来个构造函数,拷贝构造函数,析构函数了我很不懂,就继续在图书馆找相关的书看,原来每一个变量在程序运行时都要占据一定的内存空间,在声明一个变量时对变量进行初始化,就意味着在为变量分配内存单元的同时,在其中写入了变量的初始值,如果没有初始化而被使用会在编译时产生错误,所以构造函数就是为初始化而提出的,问题又来了怎样定义,和使用这个构造函数了这又是一个麻烦,定义构造函数如果没有继承,只是一个类自己的构造函数写起来很简单,但是有继承和类对象数据成员时就要繁琐点了,要经常敲代码才可以达到熟练,光说没用,要多巧,好了定义好了,现在可以用了,构造函数是在对象被声明时自动调用的,所以千万要注意,是自己自动调用的,当时我是就范了这样的错误,如:我定义了一个类的构造函数clock(Int ,int,int),但是我在声明时这样定义Clock c;这肯定是错了,所以在定义时不能像其他基本数据类型一样那么随便的定义一个对象,那个系统自己定义的构造函数,拷贝,析构等大多数都是满足不了自己的功能的,所以必须自己写。构造函数懂了其他的也就自然的可以看懂了。数据结构很喜欢那里面的算法,倒没有什么的疑问,主要是自己用一种欣赏加模仿的去学数据结构。数据结构里的算法确实很好,也很难。
大二下学期,汇编,计算机组成,数据库哎这几门可把我搞晕了,不过计算机组成,汇编帮我解决了上面说的编译,连接还有cpu怎样运行指令的等很多的疑惑。汇编中的第一章基础知识就给了我很多的难题很困惑,80x86和pentium微处理的功能结构看了好久都没有看懂,我一直都想知道我们的程序是怎样被CPU执行的,我觉得这幅图8086CPU结构示意图可以帮我解决我的问题,但是问老师时,老师总说这个不是我的课程任务,还说到时候你会知道的。我已经习惯了,如果老师能给我答案,我就不会有那么多的疑问留到今天了,我想这就是三本吧,我也认命了,谁叫自己没有考到好的大学,只有自己多看点书了,多走点弯路。学计算机组成和汇编时我有一段时间很想去看逻辑电路书。这个学期结束后,关于编译,连接还有指令涉及到硬件的东西我都很感兴趣,也很迷惑,我想这些问题在这个学校根本不可能帮我解决的。
大三了,我一直都在想我学到了什么,我觉得自己什么都不会,大一时的那种好奇,迷惑现在都放在心里了。我可以说我的大学一直都是带着疑问看书,学习,所以我什么都不会,我会的或许别人早就会了,我会的都是自己不懂的,或许还有很多人懂的我还不懂,或许我还根本没有意识到。我背课文很烂,但我总喜欢写自己的看法,但又往往答的不全,或很片面,也因为这个觉得自己的理解力很差。
我还有个看书的习惯,每本书我看的最仔细,最认真的就是第一章 ,绪论等一般问题都是在这里产生的,我就是带着这些问题去看后面,所以我觉得自己一本书看进去了没有,就看你第一章有没有问题,有没有疑惑。
这里没有我要的答案。为了寻找自己的答案和困惑而努力。