摘要:
在程序设计领域,一个广泛认可的定义是“一种将不同的特殊行为和单个泛化记号相关联的能力”。和纯粹的面向对象程序设计语言不同,C++中的多态有着更广泛的含义。除了常见的通过类继承和虚函数机制生效于运行期的动态多态(dynamic polymorphism)外,带变量的宏,模板,函数重载,运算符重载,拷贝构造等也允许将不同的特殊行为和单个泛化记号相关联,由于这种关联处理于编译期而非运行期,因此被称为静态多态(static polymorphism)。静态多态性1、函数重载与缺省参数(1)函数重载的实现原理假设,我们现在想要写一个函数(如Exp01),它即可以计算整型数据又可以计算浮点数,那样我们就得 阅读全文
摘要:
当我们越来越多的使用C++的特性,将越来越多的问题和事物抽象成对象时,我们不难发现:很多对象都具有共性。比如数值可以增加、减少;字符串也可以增加减少。它们的动作是相似的,只是对象的类型不同而已。C++提供了“模板”这一特性,可以将“类型”参数化,使得编写的代码更具有通用性。因此大家都称模板编程为“通用编程”或“泛型编程”。一般而言,模板分为函数模板和类模板,下面就让我们分别来了解一下它们。一、函数模板1、函数模板的定义和使用定义一个模板函数的格式并不复杂,如下:template返回类型函数名(函数参数列表){//code...}下面,让我们来举一个例子来说明模板函数的作用和用法(具体代码见Ex 阅读全文
摘要:
一、什么是字节对齐,为什么要对齐 现代计算机中内存空间都是按照byte划分的,从理论上讲似乎对任何类型的变量的访问可以从任何地址开始,但实际情况是在访问特定类型变量的时候经常在特 定的内存地址访问,这就需要各种类型数据按照一定的规则在空间上排列,而不是顺序的一个接一个的排放,这就是对齐。 对齐的作用和原因:各个硬件平台对存储空间的处理上有很大的不同。一些平台对某些特定类型的数据只能从某些特定地址开始存取。比如有些架构的CPU在访问 一个没有进行对齐的变量的时候会发生错误,那么在这种架构下编程必须保证字节对齐.其他平台可能没有这种情况,但是最常见的是如果不按照适合其平台要求对 数据存放进行对齐, 阅读全文
摘要:
extern "C"的主要作用就是为了能够正确实现C++代码调用其他C语言代码。加上extern "C"后,会指示编译器这部分代码按C语言的进行编译,而不是C++的。由于C++支持函数重载,因此编译器编译函数的过程中会将函数的参数类型也加到编译后的代码中,而不仅仅是函数名;而C语言并不支持函数重载,因此编译C语言代码的函数时不会带上函数的参数类型,一般之包括函数名。 这个功能十分有用处,因为在C++出现以前,很多代码都是C语言写的,而且很底层的库也是C语言写的,为了更好的支持原来的C代码和已经写好的C语言库,需要在C++中尽可能的支持C,而extern 阅读全文