您的位置:首页 > 编程语言 > C语言/C++

C++程序设计课程师生互动(2012年春第10周)

2012-04-25 21:14 330 查看
  本周任务有2/3的同学全部完成,可喜。对类的继承的掌握还是不错的。然而,共性的问题出在任务2中,对指针成员的处理,这里存在大隐患。看来,我得在课堂上讲讲有关的原理了。因为出问题的多,我没有一一指出,希望同学们仔细阅读我写的博文《C++防灾——为指针成员分配专门的存储空间》以加深理解。

  下面是从同学们博文摘出的总结与感言。

【精品感言】

这周我想说的话有很多,首先,我真的很高兴看到了自己的进步,这个周的任务我提前预习,以前写了,印象很深刻,通过这个周我发现我爱上了找错,虽然有错误不是很好但发现错误我能改正我充满着成就感,或许有人看见我的话会嘲笑我,但我想说若是上半年刚起步时,我可能连一个字都打不出来,成天的呆在计算中心不是白呆的,脸上的痘痘不是白起的,有了一次收获就渴望下次的成功,真的好高兴,这几周的任务不仅能跟上,而且基本上都能保证是独立完成,哈哈,这种喜悦老师你懂得···渴望下次成功,齐齐加油~~!!!【有个笑话:找对象一定要找程序员,他们成天想的是,我到底错在哪里?不找到错误誓不罢休。一旦找到,立马就改。感人的程序员!加油!】

【学习经历】

函数都是在类里面直接定义了···因为一开始觉得做不出来,只是想做做试试···后来有思路了···可是太晚了,逸夫要关门了···哎···忘记带优盘或者下载线了···只好发了···纠结····为什么我重载">>"不行呢?奇怪···
层层叠加,多层派生
【第一篇】对于派生还不太熟练!【第二篇】对派生有点感觉了!【第三篇】比较难,费了好大劲才做出来!
第一次在宿舍交作业。。这笔记本找了半天居然没有找到截图。直接用了QQ截图截下来的。。
跟老雷学会了构造函数的声明方法【不是跟老贺学的?】
第一次没有贴图,而是将数据复制下来了,省事了许多,但是,好像对那个黑框框产生感情了,有些结果还是有那个黑框框比较好看...唉,什么时候才能摆脱黑框框啊,,【感情就是逐渐培养的。不用黑框框是另一阶段的事,但黑框框的时代决定了你的基础。】
把背景改成了蓝色的...舒服好多【我的电脑上用的是豆绿色,据说是最有利于保护眼睛的颜色。】
根据课本上的内容来完成这个任务是挺简单的,不过还是要学会不看课本也能完成任务,先朝着这个目标加油吧!
今天收获不小啊,不仅将程序编出来了,而且,在博文里面再也不用出现黑框框了,哈哈,悲催的是,假期跟同学学了怎样将黑框框和黑框框里面的字变成其他颜色,可是,现在竟然把那条语句给 。。。忘了。。。【变颜色到“属性”菜单里找】
编这个感觉还好,就是要注意细节!
在释放建立对象时动态分配的内存这块不太上手【脚用上也得上。】
突然发现自己的基础知识不是很牢,特别是在细节方面不是很好,要抓紧时间看课本了。。。。【看书、实践,不断交叉。】
有点小难度 感觉派生不是很了解!!【做出这么多程序了,还不了解?】
【只交代码,一声不吭。】
这两周的任务每次做的都会出现很多的错误,写过的运行不出来,出现的错误改的少了,但还是会出现,我是很不愿意贴错误的代码。【你将错的贴出来,我可以给你提修改建议。另外,学着上论坛求助,这也是个办法。参考:http://blog.csdn.net/leihengxin/article/details/7416968】
勤奋的人是时间的主人,懒惰的人是时间的奴隶。【哲理】
输出的样式好像跟老贺的不太一样,但结果是对的,可喜可贺!虽然做的过程中存在错误,但自我感觉这个程序还可以现在完全明白我的程序有个缺点,就是注释太少,我会改正这个缺点的,恩,加油!【进步已经不小了,继续!】

【知识总结】

没有基类的许可,子类是不可以使用基类的数据的,保护自己的隐私!
继承和派生很好,省去了许多麻烦,缩短了代码的长度
又是新的知识,按照以往的规矩,还是说一下新知识的几点基础知识。新的类为第一个声明的对象 ,而:后面的对象是声明的基类。基类型之前的是继承方式的声明。继承方式和原有类的类型大致相同,什么public .private .以及protected。一般没说的话,默认是四有。这个和刚开始学类的时候不一样。
开始怎么也输不出中点是2.5,后来把x,y的类型改为、double型的就好了。。原来派生是酱紫的。【是酱紫的。】
show1()很纠结的站在那。。。【show1()其实可以投入show2()的怀抱,不必站在那旁观。】
多层派生时的构造函数,成员函数都要定义成protected型的,不然子类无法识别。函数声明很重要啊,我偷懒想复制粘贴奇函数中友元函数的声明。结果,后面凌乱了。。。【成员函数一般定义成public型。】
只有新开辟的空间才可以释放,并且先开辟的后释放,后开辟的先释放
在输出内容时,开始总想分两部分,一部分输出基类的,另一部分输出派生类,但从结果上看是不成功的,因此仔细理顺一下,就是在输出基类数据时单独一部分在基类定义,其余在派生类中编写。
小小字符不可忽视,忘写<<和;导致出现好多bug;
pt1=pts;开始时写成了pts=pt1,输出全是0 【差别大了!】
开始忘了字符串的输入是要利用循环结构的,所以一直出错【调用strcpy解决,你的方法笨了。】
多重派生,可以分成若干部来写,就像老师说的:先声明基类,再声明派生类,逐级进行,分步调试。基类和第一个派生出来的类中的数据成员要定义成prected型,这样,派生出来的类才能访问其数据成员,开始定义成了private了,运行没通过,才发觉是这里出了问题...“爸妈的东西不能碰了,好郁闷”....【让碰就碰,不让碰就不碰,要乖。】
基类与派生正如父与子
在执行派生构造函数时,调用基类的构造函数解决了基类的构造函数不能被派生构造函数继承的问题,析构函数(具有清理作用)同理。【不是很准确。】
c++语言中的继承就像现实生活中的继承,数据成员在派生类中的访问权限不仅要根据本类中而定,而且要依访问方式而来。派生出的类中的数据成员包括基类和自己类中的。
本来写的是 (pt1.x+pt2.x)/2, 但是不对,我一直不明白是怎么错的。现在懂了,class point pt1,pt2 ,pt1,pt2 他是属于两个类的对象,我们在定义构造函数时应该是使用的是参数,而且此时pt1,pt2在此是还未被赋值,根本不可用。【实践中出来的真知!】
宏定义有时候很好用。【C中用宏定义,C++提倡用常变量:const double pi=3.1415926】
如果继承的话,protected和private没有区别,该类的客户不能调用该字段下的任何东西。【没有区别?客户?字段?】如果发生继承。则子类可以使用父类的protected成员,不能使用private。
在派生类中,他从基类中得到了除private之外的所有。【理解的到位。】
【一直保持将类的定义和类的使用分开的风格,表扬!】
这个程序我感觉最难的是动态的建立,说实话还是有些不明白,但是大体的格式明白了也知道了什么时候要用动态的构建了!还是有进步的哈!【学这个专业的,这个必须懂。】
派生类也是一个类,不过是在基类的基础上扩充得到的类罢了!【蜗牛肉也是肉,……】
【某同学的name输出“屯屯屯妄葺葺”,老贺评论:看CPerson类的构造函数,为名字copy值了吗? 】
继承与派生节省了软件开发过程中的人力,物力和时间,大大的提高了效率。
第一次运行时,输出的中点为(2,7),而不是(2.5,7),这时就要考虑是不是数据类型出现了问题。。。。【悟到这个很管用】
老师上课讲派生与继承时举得例子,实在是记忆尤深啊。。。。【儿子大了,想继承的问题时清楚了很多,也就能讲出来了。】
我觉得雷同鞋的思维很棒,所以稍稍借鉴了一下。。。。老师不要怪我。。。。雷同鞋谢啦,以后有空要多向你请教!【合理的参考是很好的学习方式。不过,用循环语句,还是指定循环次数的办法做字符串的复制,不高明。何不用strcpy?】
Line(Point pts, Point pte):Point((pts.x+pte.x)/2, (pts.y+pte.y)/2),pt1(pts),pt2(pte){} 派生类构造函数后面括号内的参数表列中包括参数的类型和参数名,而基类构造函数后面括号内的参数表列只有参数名,这是因为此处为调用基类构造函数,因此参数为实参 。【形参、实参,捣鼓清楚还是必要的。】

【徐同学专栏】

算是在基类Point的基础上的一个简单的派生吧,着重考察的都是一些比较简单的东西,老师的目的应该是想让我们大体掌握派生的一般步骤、格式和声明方式吧,至于成员函数的实现都是一些很简单的功能,而且,基类Point中的数据类型也只有一种public,所以不会有成员访问的问题,总体,只要对基础知识掌握的不错了,就能实现代码,何况大部分的代码老师都已经给出了,只是单纯的补充罢了,所以总体还是比较容易的。
实验考查派生类的构造函数和构析函数,其实也是最简单的啦,请不要反驳我,不要误会,我可不是说这个题目很简单哦,只是,不相信我的话请看看课本P363,例11.5,算是很好的实验模板吧,整体构架几乎一模一样,只是在类名和函数上有所改动,说实话,这个题目要实现的功能函数并不难,所以,虽然,我在编写代码的过程中,并不太顺利,可是,只能说自己太眼高手低了,不管现在我们已经学到的东西有多少,千万不要自满,虽然接触C++已经半年多了,可是我们还是地地道道的菜鸟,不用说全国,就只是自己班里,厉害的人物也还是很多,最起码现在的我还是远远不过,要学的东西还有太多太多,差距是清晰可见的,现在能做的也只有,一步一个脚印,不要总是眺望高空,还是脚踏实地,回归课本,踏踏实实把课本学好。
实验考察多重派生类的构造函数,老师其实很慈悲,今周给的实验课本上都有很好的模板,这个实验当然也不例外,课本上也有类似的例题,难点都是一些技术性的问题,看好课本倒是都能很好的解决,所以啦,综上所述,就没什么可以说的,回归课本就好。其次的就是一些小的知识点了,比如,新数据的录入,用到了一个小的技巧,while(1),还有,“<<”运载符的重载,这些知识,以前的实验中都有涉及,应该可以很好的解决的。总的来说,大体结构课本上有好的模板,其次,知识比较琐碎,但是分步骤,一点一点实现代码功能的方式还是很有优越性的,用这种方法,逐步实现代码就好。

【刘同学的知识总结之一】

1)派生类构造函数的一般形式:

派生类构造函数名(总参数表列):基类构造函数名(参数表列)

{派生类新增数据成员初始化语句}

注意:派生类构造函数名后面括号内的参数表列包括参数的类型和参数名(如int n),而基类构造函数后面括号内的参数表列只包括函数名而不包括参数类型(如n,nam,s),因为这里不是定义基类构造函数,而是调用基类构造函数,因此这些参数是实参而不是形参。

2)派生类构造函数标准写法:

例、Student1(int n,string name,char s,int a,string ad):Student(n,name,s),age(a),addr(ad){ }

【刘同学的知识总结之二】

1)公共继承特点:采用公用继承方式时,基类的公用成员和保护成员在派生类中仍然保持公共成员和保护成员的属性,而基类的私有成员在派生类中并没有成为派生类中的私有成员,只有基类的成员函数可以引用它。

2)私有继承特点:私有基类的公用成员和保护成员在派生类中的访问属性相当于派生类中的私有成员。私有基类的私有成员在派生类中成为不可访问的成员。

私有基类中的成员 |在私有派生类中的访问属性

私有成员 |不可访问

公共成员 |私有

保护成员 |私有

3)保护继承的特点:保护基类的公用成员和保护成员在派生类中都成了保护成员,其私有成员仍为基类私有,也就是把基类中的公共成员也保护起来,不让类外任意访问。

【另一位刘同学】

做出这个程序来花了我很长时间,原因是有一些细节没有搞清楚,比如说求出的中点坐标不对,原来是数据类型出错了,于是就把int型改为double型的,还有就是不太明白为什么求中点坐标要用PointP函数,后来明白了。。。。。
这个程序让我明白了很多,比如:m_szName=new char[strlen(name)+1];需要重新开辟空间,因为name不属于这个类,不太安全。。还有m_nAge和m_nSex不需要释放,因为这两个系统自动释放。。。。还有派生类输出函数应输出所有成员变量(含基类继承的成员变量的值)。。。等等。。【认真的总结】
这个题就照老师的思路最好。。:先实现基类Point,再实现Point的派生类Circle,最后实现Circle的派生类。。。。,这样思路比较清晰,写起来也很快。。

【多彩窗口:讲了下从黑框框中取文字,招来几位彩框框】







内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: