自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(7)
  • 收藏
  • 关注

原创 编译时多态和运行时多态

C++支持两种多态性:编译时多态:程序运行前发生的事件 —— 函数重载、运算符重载 ——静态绑定         运行时多态:程序运行时发生的事件 —— 虚函数机制           ——动态绑定多态性是面向对象程序设计的重要特征之一。所谓多态性是指当不同的对象收到相同的消息时,产生不同的动作。C++的多态性具体体现在运行和编译两个方面,在程序运行时的多态性通过继承和虚函数来体现,而

2012-04-27 21:17:36 4562 1

原创 静态绑定和动态绑定

从实现原理上来说: 重载与静态绑定:编译器根据函数不同的参数表,对同名函数的名称做修饰,然后这些同名函数就成了不同的函数(至少对于编译器来说是这样的)。如,有两个同名函数:functionfunc(p:integer):integer;和 function func(p:string):integer;。那么编译器做过修饰后的函数名称可能是这样的:int_func、str_func。对

2012-04-27 21:14:54 775

原创 C++中,所谓“不能建立数组引用”的解释

不能建立数组的引用是说,数组的元素不能是引用。而int (&b)[3] = a;b本身是一个引用,b不是数组。b的引用是数组名a.如果建立数组的元素的引用,则为:int& b[3];但是int& b[3];C++不支持,因为引用不可以作数组中的元素。原因是它不支持传统意义的复制,传统意义的复制:int a = b;a和b在内存中分别占用,内容一致。

2012-04-16 00:53:55 5867

原创 用循环的方法求一个十进制数对应二进制中含有1的个数

int func(x){ int countx = 0; while(x) { countx ++; x = x&(x-1); } return countx;}x = 9999 时,x-1=9998,用二进制表示1001110000111110011100001110当他们执行&运算

2012-04-16 00:27:06 1106

原创 c++中父类的静态成员变量/函数在子类中的使用

c++中父类的静态成员变量/函数在子类中的使用时,子类是可以共享父类中静态成员变量/函数的当然有一个前提,父类中的静态成员函数/变量应该为公有的(pulic),或当为private时,应提供公有的接口函数来调用;

2012-04-15 17:57:02 8474

原创 什么情况下,类的析构函数应该声明为虚函数?

首先要明确:1.每个析构函数(不加 virtual) 只负责清除自己的成员。2.可能有基类指针,指向的是子类成员的情况,那么当析构一个指向子类的基类指针时,程序就不知道怎么办了。如果不加析构,只会析构掉自己基类的这部分,而子类无法析构造成内存泄漏。所以要保证运行适当的析构函数,基类中的析构函数必须为虚析构。反正你在写一个类时,将其析构函数写为虚函数总不会有错的。

2012-04-15 15:34:12 767

原创 构造函数为什么不可以声明为虚函数?

虚函数的意思就是开启动态绑定,程序会根据对象的动态类型来选择要调用的方法。然而在构造函数运行的时候,这个对象的动态类型还不完整,没有办法确定它到底是什么类型,故构造函数不能动态绑定。(动态绑定是根据对象的动态类型而不是函数名,在调用构造函数之前,这个对象根本就不存在,它怎么动态绑定?)

2012-04-15 15:20:17 709

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除