随笔分类 -  成长点滴

上一页 1 2

c++几种类型转换在派生类中的应用
摘要:dynamic_cast 应用于具有多态性(或具有虚函数)的类之间。会对要转换的指针进行检查,如果指针指向的目标对象类型与所要转的类型一致,则转换成功。如果不一致,或完全是无关类型,则得到一个空指针。所以使用dynamic_cast时,对返回值进行判断。因为引用不存在空引用,dynamic_cast会在执行时抛出异常(std::bad_cast)。 static_cast 可以接受基类与子类的类型转换。对于基类与基类子类的子类之间的类型转换也能接受,但是这样的转换是有风险的。static_cast会在无关类型之间转换时报错。 reinterpret_cast 重解释类型的转换,在... 阅读全文

posted @ 2013-11-22 23:58 4IT 阅读(118) 评论(0) 推荐(0)

c++虚函数
摘要:为了实现由一个基类派生出的多个子类,对于其中的某个功能,各个子类实现不同的操作,需要用到虚函数。 如果将基类中的一个成员函数声明为虚函数(virtual),子类中的同名函数也成为虚函数,并且对基类版本形成覆盖。隐藏只需要是同名的标识符即可构成隐藏,而覆盖的条件非常严格。函数名、形参表、const必须一致,返回值也要一致(基本类型)或相符(类类型的指针或引用)。 编译器遇到通过指向子类对象的基类指针调用基类中的虚函数时,与普通函数的处理不同,不会立刻生成调用代码,而会生成若干条指令,待程序运行时被执行。 运行时执行如下动作: 1. 根据基类指针指向的对象类型,找到目标对象中的虚函数表... 阅读全文

posted @ 2013-11-21 23:58 4IT 阅读(136) 评论(0) 推荐(0)

算法复习(3)二分查找
摘要:二分查找是减而治之的典型。 将一个规模较大的问题,划分为规模较小的两个问题来解决。 第一次方法:将问题平分,遇到比中点小或比中点大继续递归,遇到等于中点直接返回。因为两个分支的比较次数不同,这种等分其实是不平衡的。 第二种方法:将问题按照斐波那契数进行分割,使需要比较次数少的分支子问题的规模比比较次数多的大。这样实质上对二分查找进行了平衡。 第三种方法:将问题严格平分,将中点划入一个分支中。这样使两个分支的比较次数相同,实现平衡。这种方法的缺点是遇到中点需要继续比较划分下去,直到最后。并且这种方法需要在规模非常庞大的时候才能看出效果。 阅读全文

posted @ 2013-11-20 23:25 4IT 阅读(150) 评论(0) 推荐(0)

算法复习(2)递归
摘要:递归是函数和过程调用的一种特殊形式,即允许函数和过程进行自我调用。递归有助于找到简化问题并找到解决问题的方法。 线性递归是每一层次上至多只有一个实例,且构成线性的次序关系。线性递归是递归的最基本形式。 减而治之是将复杂的问题分成一个平凡的子问题和一个规模缩减的子问题,分别求解,最后得到原问题的解。 分而治之是将大规模的问题划分成两个(或多个)子问题,分别求解,再得到原问题的解。 递归算法易于理解和实现,但是效率较低,在追求效率时,应将递归改写为等价的迭代形式。尾递归的最后一步是递归调用,是最简单的递归模式,可以方便改写成迭代形式。 递归低效的之一是各递归实例被大量的重复地调用,因... 阅读全文

posted @ 2013-11-15 23:57 4IT 阅读(142) 评论(0) 推荐(0)

算法复习(1)
摘要:算法:特定的计算模型下,解决特定问题的指令序列。 算法要具有: 确定性 —— 由基本操作组成的序列 有穷性与正确性 —— 经过有穷次基本操作,可以解决指定的问题 可行性 —— 每一个基本操作都可以实现 这些是基本的,好的算法还要有鲁棒性,能处理各种退化情况。还要提高算法的可读性。 对于算法,最重要的是效率! 算法的复杂度包括时间复杂度和空间复杂度。每一次运行过程中消耗的存储空间,都不会多于操作次数,时间复杂度是空间复杂度的一个上界。除非针对特殊情况,一般不考试空间复杂度。 度量渐进复杂度,常用大O记号,大O记号意味着最坏情况,例如起泡排序中的完全逆序。最好的情况情况与平均情... 阅读全文

posted @ 2013-11-14 23:59 4IT 阅读(137) 评论(0) 推荐(0)

c++子类对象构造与析构的顺序对多态性的影响
摘要:子类对象构造的顺序: 1.按照继承表依次构造每个基类子对象; 2. 按照声明的顺序依次构造每个成员对象; 3. 执行函数体中的代码。 析构的顺序与构造的顺序严格相反。 这两种顺序决定了,在这两个函数中,子类中函数的多态性无法实现。构造的时候,基类子对象构造函数先执行,子类的特有部分尚未被构造,所以不能被调用。而在析构时,子类特有部分先被析构,在基类子对象中也无法调用。 总算是忙完了,过两天正常的日子,接下来还要忙。 阅读全文

posted @ 2013-11-13 23:58 4IT 阅读(217) 评论(0) 推荐(0)

简单的笔记本
摘要:简单的练习,一个简陋的记事本。基本的编辑操作、设置字体、背景等。后续要实现的功能:将文档格式以结构体形式存储在文件中,再次打开文件格式不丢失。 阅读全文

posted @ 2013-11-07 23:59 4IT 阅读(145) 评论(0) 推荐(0)

Win32绘图
摘要:今天主要学习了Win32绘图,之前许多地方用过绘图,今天系统学习了一下。 绘制点、绘制线、绘制圆弧、绘制矩形等。 阅读全文

posted @ 2013-11-04 23:26 4IT 阅读(299) 评论(0) 推荐(0)

Win32菜单、图标、光标初学
摘要:累并充实着! 今天学习了Win32的菜单、图标和光标。在64位WIN7上面运行VC6,插入资源时总是崩溃,所以在虚拟机中综合练习了一下。 1. 菜单与弹出菜单 2. 自定义的光标,有两种状态,在指定的区域(如标题栏、弹出菜单、框选区域)中切换光标样式。 3. 自定义图标,设置定时器消息,切换图标。在这个程序中,动态图标显得很乏味。不过我觉得动态设置窗口图标可以应用在如下场景:用户选择性别之后,窗口的图标为对应性别的。 阅读全文

posted @ 2013-11-01 23:48 4IT 阅读(414) 评论(0) 推荐(0)

初学Win32定时器
摘要:今天上午11点多,吉林松原发生两次地震,我在哈尔滨均有震感。带上今天这次,总共“疏散”过3次,今天是唯一有震感的。技术的发展,对各方面都带来便利。小时候第一疏散时,真的抱着被子在外面坐了一夜,因为不知道哪地震了,后续会怎么样。上大学时,疏散了,虽然我没有感觉到震感,但是也和大家一起溜达了半夜,当时大家都在打电话问,就都打不通。今天呢,到楼下之后,看到N多人在打电话,我就赶紧上网搜。确且说是上微博搜。毕竟这种突发新闻,微博的时效性是最好的。很快知道了是哪里地震,严不严重。然后,用微信给朋友发了消息,很顺利就发出去了。技术改变生活,尤其是IT技术。程序员的工作是非常有意义的。他们天天与不可见的.. 阅读全文

posted @ 2013-10-31 23:48 4IT 阅读(300) 评论(0) 推荐(0)

WM_PAINT、鼠标和键盘消息
摘要:今天学习了WM_PAINT、鼠标和键盘消息。课余做了两个小练习。 第一个,练习了根据窗口大小,重绘中心圆。 第二个,练习了WM_PAINT消息与键盘消息。利用键盘移动圆球,到达边缘给出消息提醒。 两点收获: 1. 键盘消息,如果不产生字符消息,可以在WM_KEYDOWN时,直接将值给赋于一个整数。 2. 没有无效区域产生,而又希望重绘窗口,可以使用InvalidateRect()函数。 阅读全文

posted @ 2013-10-31 00:03 4IT 阅读(284) 评论(0) 推荐(0)

Win32窗口、消息练习
摘要:昨天开始Win32,开始很不适应,一开始有太多的结构体、宏与函数需要去背诵,而匈牙利命名法与linux下的命令规范一时也转变不过来。总是跟不是讲师的代码,但是我没有放弃,调整好心态,积极地去尝试,尤其是今天,不断地去纠正,基本上跟全了讲师的所有内容。 课余又做了这个小练习,将两天的知识一并练习了。 1. 注册了3种类,使用了3种图标。主窗口1种,QQ窗口1种,Evernote窗口1种。今天尝试的结论是“1个窗口类的窗口,图标是一样的”。 2. 复习了昨天的编译、链接、makefile等内容。 3. 复习了今天的消息、窗口的附加数据等内容。 不抛弃,不放弃,用心听下去,可能一时... 阅读全文

posted @ 2013-10-29 23:56 4IT 阅读(202) 评论(0) 推荐(0)

双向链表、迭代器
摘要:今天学习了STL中的容器、迭代器的部分内容。一个双向链表讲师讲解用了超过400行的代码,加上极快的语速,普遍理解不是很好。 与他们相比,我的时间是很宝贵的,必须要理解好,跟上进度。 对于链接的操作,实质上就是对其中指针的操作。 遍历的条件与每一步,都是通过指针。而所谓的插入、删除,也是修改指针的指向。 在进行相应的操作之后,也要注意指针的安全,不要产生野指针。 首部与尾部时特别要考虑到指针的指向。 这就是一点感慨,继续去复习代码啦。 阅读全文

posted @ 2013-10-25 23:54 4IT 阅读(212) 评论(0) 推荐(0)

初学C++中的模板
摘要:从c对c++,程序员们一直追求在功能更强大的同时,使使用更简单。 针对可以使用相同算法而类型不同的函数,在c中需要为每个类型写一个函数。或者,借助于带参宏,在预处理时进行文本替换,“自动生成”多个版本的函数。 在c++中,因为类的广泛使用,类型越越多,注意不能通过这种方式来实现,于是就有了“模板”的功能。c++类型检查比c严格,使用模板,在编译是进行纠错也要比c中使用宏安全许多。 c++中,不仅函数能用模板,类也能使用模板。模板就像孙悟空的毫毛,变化多端,妙用无穷。 有抽象就有具体,有共性就有特性。必须抓住共性用模板,针对特性进行特化。如果特性多,而共性少,则不宜使用模板。像人走路... 阅读全文

posted @ 2013-10-24 23:29 4IT 阅读(125) 评论(0) 推荐(0)

i++ 与 ++i
摘要:今天做项目,其余时候学习了操作符重载。 学习操作符重载的时候,比较清晰地理解了前后自增自减的区别与本质。之前学习C的时候,受到误导,一直以为前自增的优先级高,返回加1的值,后自增的优先级比较低,返回原来的值,在下次调用时是加1的值。 先做了个*p++和*++p的试验。 得出结论,前自增与后自增的优先级都高于解引用。 之前看到的一个问题: int x = *p++**++p 求x的值。++的优先级高于解引用,高于乘法,所以*p++**++p = (*(p++)) * (*(++p))。如果笔试中遇到这样的题目,冷静分析拆解,应该不是问题。 最后总结下前后自增减的区别:1. 执行完... 阅读全文

posted @ 2013-10-21 23:42 4IT 阅读(174) 评论(0) 推荐(0)

QT/C++打字游戏原型
摘要:从上午开始,不断的试错,试探函数的用法,磕磕绊绊中写出了这个简单的打字游戏。编译及测试环境:Ubuntu 12.04, QT4功能:1)可以调整速度2)速度会随分数增加而变快3)可以暂停与重新开始不足:不能重复游戏/* 简单说明 */1. 初始窗口 800*6002. 窗口可以放大缩小,右侧区域布局不变已考虑并解决的问题:LineEdit 设置为ReatdOnlyslider 在开始游戏后失效未解决的问题:游戏速度增加后,slider位置不随速度变化而滑动游戏窗口收窄,会比较容易得到高分。未通过函数平衡此项。3. 暂停与结束弹出对话框可以优化的地方:更好利用对话框的按钮,并自定义对话框样式 阅读全文

posted @ 2013-10-19 23:52 4IT 阅读(899) 评论(1) 推荐(0)

简陋的计算器
摘要:这是在今天用QT做出来的简单的计算器,功能简单到简陋的地步,只能实现基本的加减乘清零等操作到最后要实现小数点、以及除法的时候,发现无能为力。如果一开始就把操作数设为int,最后会很难去处理。以后会将操作数设置为QString类型,完善除法与小数点的功能。 阅读全文

posted @ 2013-10-18 23:40 4IT 阅读(162) 评论(0) 推荐(0)

简单的登陆界面
摘要:在老师讲的基础上,把知识点进行整合。进行了布局优化,改变因使用GridLayout造成的label与文本框别扭的等宽显示。取消了底部按钮前的Stretch, 使显示的效果更符合当下的审美。尝试将登陆button用HTML格式强调时,发现并不能像label那样支持HTML。自我评价对今天的知识掌握较好。-------------------------------------------------------16日,将需要做的事情分成了碎片,中午与晚上分别完成,并没有请假耽误课程。新的讲师,风格与之前的几位讲师有很大的差异。一开始有些不适应,后积极调整心态,学习的效果还不错。这种态度的改变,而 阅读全文

posted @ 2013-10-17 00:01 4IT 阅读(141) 评论(0) 推荐(0)

上一页 1 2

导航