摘要:
我没参加过笔试呢,不过经常有人拿着笔试中的问题来问我,特别是++、--运算符的问题, 其实这些问题应该从基本原理上理解一下,但是在笔试中这种问题还是有个简单的方法计算才好。总结以下的几条:1) 在计算中,对于一个作用域内的前缀操作数(++i),替换为i的最终数值,对于后缀操作符替换为原数值。2) 在printf,cout等依靠堆栈工作的方法中,对于一个作用域内的前缀操作符(++i),替换为i的最终数值,对于后缀操作符,按照入栈顺序分析。 1: int a ; 2: //-------------------------------------------------... 阅读全文
摘要:
重载运算符是对正常函数的语法美化.没给语言增加任何基本的东西,但改善了可理解性并降低维护费用.当用户需要时,就应该使用运算符重载,但应该仅仅以用户熟悉的语义方式来使用它。1. 重载规则不能重载的运算符: . 和 .* 和 ?: 和 :: 和 sizeof 和 typeid重载运算符有两种基本选择: 类的成员函数或者友元函数, 建议规则如下:运算符建议使用所有一元运算符成员函数= () [] ->必须是成员函数+= -= /= *= ^= &= != %= >>= <<= , 似乎带等号的都在这里了.成员函数所有其它二元运算符, 例如: –,+,*,/友元函 阅读全文
摘要:
面向过程、面向对象、泛型编程(Generic Programming,简称GP)应该是三种重用的编程方法。传统的C++语言中,泛型编程思想仅仅体现于简单的模板技术。而之后引入的标准模板库STL(Standard Template Library)是泛型编程思想的实际体现和具体实现。1. 问题引入 面向过程的方法,可以将常用代码段封装在一个函数中,然后通过函数调用来达到目标代码重用的目的。 面向对象的方法,可以通过类的继承来实现(对象的目标)代码的重用。 如果需要编写一个可用于不同数据类型的算法,可以采用的方法有: 1). 面向过程的方法,对源代码进行复制和修改,生成不同数据类型版本的算法... 阅读全文