昨天DEBUG到太晚了,没来得及写,今天补上。连同昨天今天两天的,嗯嗯。
昨天上了一天课,几乎没时间看书,不过晚上下了课还是开始编程了。那天想要做一个小作业,就是书上的例子,虽然书上都有答案,但只是程序的零散片段,想要把它整合起来,变成自己的东西。看的终究不是自己的,真正动手实践,才是自己掌握的知识。
看的果然是简单,轻松加愉快。自己动起手来,每一句都是问题。细节的语法问题就不说了,这是基础不够扎实。重要的是,对整体程序框架的理解,还有程序的流程。以后要养成画流程图的好习惯。再编写之前,先把程序要实现的功能想清楚,然后列出需要的操作,接着构造数据结构。根据需要的操作,定制一个类型,或者几个,但目前我肯定还没达到几个那个高度,嗯,继续努力吧。在这个类型中,辨别哪些需要在类体的公共函数成员中实现,哪些不需要,其实就是给出类体的接口。接口就是PUBLIC,能够与外界连接,使运行程序时能够通过这些接口,借助函数实现自己想要达到的功能。接下来就是程序编写了。这部分最重要的当然就是思路。今天上午去蹭了别的班的C++课,老师说,程序无非三种结构,顺序,重复,选择。的确,具体的实现就是要靠这些小段结构来实现。切记切记,一定要动手,不能眼高手低。
下面就写一下这两天DEBUG的收获。好消息是,今天,刚刚,终于调通了,编了一个自己的小文本,试着查找了一下,真的成功了哦。虽然参考了书上的设计,但是还是有自己的思路的,重要的是,第一次自己编写这样的小程序,能够完全理解,并加以实现,就是最大的收获嘛!给自己鼓励~~
1.声明类时,竟然写在了头文件中,有点不理解,是因为这个头文件中内容太少,所以就包含了类?还是就是应该这么写呢?
不太明白,如果类很多的情况,是否应该写在一个专门定义类的文件中,最后在实现文件中包含就可以了吧?这个应该还是比较灵活的吧。
2.定义类时,专门建立一个class,cc文件,里面定义各类的函数实现体。注意语法:返回类型 类名::函数名(形参){ }。
如果返回类型或者形参中有class中 typedef 的简写,也要注明,class::name
3.不算是编程收获吧,算是对自己OS的一个更新的认识。发现竟然有vim,比vi好用的多多多啊,苦了我这么久一直用着古老版本vi。。。导致现在编程时候,每改一次,就按ESC,严重影响效率啊。。。以后改用VIM了。最好的是以后重新装个OS,有更好的编程环境,最好能有彩色的,还有括号对应,自动缩进的哪种,那编起来应该很爽哇。不过现在,这种难用的都能适应了,以后要是有了更好的,哇塞,那不是更爽。开心~
4.开始编译的时候,发现 有3个CC文件,一个H文件,那么该怎么编译啊?猜测了一下应该用make吧?所以就跑到鸟哥那里,翻看了make部分的知识,也导致DEBUG中断了,看了半天,发现有点纠结,想想还是专门拿出大块时间好好看看吧。所以就去直接用G++编译了最后那个实现程序的CC,然后今天就一直调试,调试,最后,竟然成功了。但是目录下面没有makefile文件,不知道是否应该有呢?有待考证,还需要继续学习啊……不懂得太多……回头想想呢,只要最后那个文件包含了其他的那些,使他能够直接编译,应该就可以了吧,事实证明这样理解是正确的。只是没用到Make 啊。不过看看还是很有收获的。
5.调了好多语法错误之后,终于陷入了绝望,因为有那么一个错误,一直一直存在,完整的太长了。意思就是,TQ类里面const在print_results函数中竟然直接调用了。不理解什么意思,以为是TQ类型不能直接调用,这个应该不会啊。那就是写成了const了就不能直接调用了,这个一直觉得是对的,就把所有const全去掉了。但还是不对,说有两个函数在TQ类里面没有找到,undefined reference to functions blablabla……最后发现了致命错误。。。
set<TextQuery::line_no> TextQuery::run_query(const string &word) const {}
string TextQuery::text_line(line_no line) const {}
后面那俩const是嘛意思?貌似真没见过,不知道啥意思。所以自己编程时候就没写,后来和书上一比较,发现少了,加上以后,程序竟然奇迹般的不报错了,成功了。高兴了五分钟。哈哈。但是这个问题还是不明白,后置的const???代表什么呢?求解……求解……
本文分享了作者在编程学习过程中的心得与调试技巧。包括类的声明与定义、使用vim替代vi提升效率、理解程序结构(顺序、重复、选择)、解决类中const的疑惑,以及如何编译和理解CC文件的组织方式。通过实际案例,作者成功调试并实现了自己的文本查找程序,收获颇丰。

被折叠的 条评论
为什么被折叠?



