摘要: 类型转换在C++中是一个很重要的机制,因为C++本身是一个强类型的语言,所以对类型转换有些理解很有必要。在cplusplus.com上看到一个教程讲解很全面,所以比较容易理解。http://www.cplusplus.com/doc/tutorial/typecasting/1.一些隐式的类型转换对于理解程序很有帮助,甚至对编程风格影响很大。2.显式类型转换两种符号:一个是C风格转换符号(int) a, 另一个是函数符号int (a)。但是这样的传统的类型转换允许任何类型指针之间的转换,这对于有成员函数的类而言,对造成运行时错误或者其他不可预知错误。为了处理“类”之间的类型转换,引入了四... 阅读全文
posted @ 2013-06-06 17:26 Henry要当小码农 阅读(266) 评论(0) 推荐(0) 编辑
摘要: 前一个问题是:非多态情况下,用基类指针去访问派生类的函数。那么又要问了:多态情况下,怎么用基类指针去访问基类的函数呢?当然这里指的是虚函数。答案是:用取内容运算符*获得派生类对象,然后再强制转换成基类的对象,用它去调用即可。ps. 同样的,在多态情况下,用基类指针new一个派生类对象,基类和派生类都会初始化一个对象,然后各自维护。 在用指针去调用数据成员、非虚成员函数时,两者完全相同。 唯一区别是,在多态时,基类指针调用虚函数时会转向派生类,而非多态时没有虚函数,因而没有这种特例。下面是测试程序,随意感受一下~View Code 1 #include <iostream> 2 us 阅读全文
posted @ 2013-04-12 02:28 Henry要当小码农 阅读(1687) 评论(0) 推荐(0) 编辑
摘要: 1.如题。如果是基本类型的指针指向另外一个类型的对象,编译器会报错。那么题目这个情况,会被编译器的类型安全检查出来而编译出错么?经过实测,不会报错。C++允许这样的情况存在。2.那么就会问一个问题,这个指针调用的数据成员或者成员函数是谁的呢?经过测试,是基类的。3.那么就会继续问一个问题,能用这个指针调用派生类的东西吗?经过测试,可以。但是需要用强制类型转换,将这个指针转换成派生类的指针。ps.当一个基类指针用new指向一个派生类时,基类和派生类都会初始化一个对象,各自维护。调用哪一个取决于指针是何种类型。最后是测试程序,大家随意感受一下~View Code 1 #include <io 阅读全文
posted @ 2013-04-12 02:08 Henry要当小码农 阅读(430) 评论(0) 推荐(0) 编辑
摘要: 我又食言了。 上篇说好了明天继续,结果拖到了今天。不过这几天我也没有闲着,天天都有在debug。 不得不说debug真的是考验一个码农的耐心、细心和想象力的事情。 我这三天在闲下来的时候就会想想,到底是什么情况没有考虑到:是还有没想到的边界条件?是HDU服务器上的编译器和VS2010的差别?最后的找到的原因也真的是让我很无语。这里不禁要抱怨一下HDU ACM的Online Judge系统,您就不能把测试用例放出来么?至少把没通过的测试用例放出来行不行啊?到底什么地方错了还要自己去猜,真的是很让人抓狂的啊! 其实上篇给出的程序还是错误的,在一些边界情况下会得到错误的结果。上篇着重讲基... 阅读全文
posted @ 2013-03-26 23:23 Henry要当小码农 阅读(244) 评论(0) 推荐(0) 编辑
摘要: 如题,参加腾讯的编程马拉松比赛,由于好久没有码C++代码,错误百出,2个小时竟没有完成第一题!(一共有5道) 痛定思痛,开博搞起。 坚持学习C++,每天进步一点点! 第一题题目是(经简化,出题人太爱扯淡,就不耽误大家时间了):小Q和HR相约在腾讯第二届编程马拉松大赛进行到第5天的时候(即2013年3月24日),一起“向前穿越D天,然后开启幸福新生活”。其勇气可谓令人赞叹,但可怜的小Q却总是备受折磨——小Q理解的”向前穿越”是朝着未来的方向,而女友HR理解的“向前穿越”却是朝着古代的方向!假设已知现在的日期和穿越的天数D,你能计算出小Q和女友各自到达的年代吗?Input 输入首先包含... 阅读全文
posted @ 2013-03-25 02:59 Henry要当小码农 阅读(281) 评论(0) 推荐(0) 编辑