由于重新定义继承而来的non-virtual函数是不正确的(见上一个条款),所以这个条款就将问题局限于:绝不重新定义继承一个带有缺省参数值的virtual函数。
(一)
virtual函数是动态绑定的,而缺省参数却是静态绑定。
对象的所谓静态类型,是它在程序中被声明时所采用的类型。
你可能会在“调用一个定义于derived
class 内的virtual函数”的同时,却使用了ba...
分类:
编程语言 时间:
2014-07-04 08:23:12
阅读次数:
412
首先是方法的参数是父类对象,传入子类对象是否可行然后引出Parent p = new Children();这句代码不是很理解,google的过程中引出向上转型要理解向上转型又引出了动态绑定从动态绑定又引出了静态绑定程序绑定的概念:绑定指的是一个方法的调用与方法所在的类(方法主体)关联起来。对jav...
分类:
编程语言 时间:
2014-06-29 06:59:16
阅读次数:
239
程序绑定的概念:绑定指的是一个方法的调用与方法所在的类(方法主体)关联起来。对java来说,绑定分为静态绑定和动态绑定;或者叫做前期绑定和后期绑定静态绑定(早绑定 编译器绑定):在程序执行前方法已经被绑定,此时由编译器或其它连接程序实现。例如:C。针对java简单的可以理解为程序编译期的绑定;这里特...
分类:
编程语言 时间:
2014-06-27 11:22:43
阅读次数:
213
首先是方法的参数是父类对象,传入子类对象是否可行然后引出Parent p = new Children();这句代码不是很理解,google的过程中引出向上转型要理解向上转型又引出了动态绑定从动态绑定又引出了静态绑定程序绑定的概念:绑定指的是一个方法的调用与方法所在的类(方法主体)关联起来。对jav...
分类:
编程语言 时间:
2014-06-19 11:50:54
阅读次数:
313
首先是方法的参数是父类对象,传入子类对象是否可行然后引出Parent p = new Children();这句代码不是很理解,google的过程中引出向上转型要理解向上转型又引出了动态绑定从动态绑定又引出了静态绑定程序绑定的概念:绑定指的是一个方法的调用与方法所在的类(方法主体)关联起来。对jav...
分类:
编程语言 时间:
2014-06-19 10:10:49
阅读次数:
315
首先是方法的参数是父类对象,传入子类对象是否可行然后引出Parent p = new Children();这句代码不是很理解,google的过程中引出向上转型要理解向上转型又引出了动态绑定从动态绑定又引出了静态绑定程序绑定的概念:绑定指的是一个方法的调用与方法所在的类(方法主体)关联起来。对jav...
分类:
编程语言 时间:
2014-06-19 08:34:09
阅读次数:
398
大家都知道C++虚函数的机制,对于基类定义为虚函数的地方,子类如果覆写,在基类指针或者引用来指向子类的时候会实现动态绑定。 但如果指针去调用非虚函数,这个时候会调用C++的静态绑定,去判断当前的指针是什么类型,就去执行哪个类型的函数。 很有一种比较经典的用法,就是Template Method模式....
分类:
编程语言 时间:
2014-06-17 20:17:49
阅读次数:
185
大家都知道C++虚函数的机制,对于基类定义为虚函数的地方,子类如果覆写,在基类指针或者引用来指向子类的时候会实现动态绑定。
但如果指针去调用非虚函数,这个时候会调用C++的静态绑定,去判断当前的指针是什么类型,就去执行哪个类型的函数。
很有一种比较经典的用法,就是Template Method模式,基类定义一个非虚的算法框架,里面具体定义一些纯虚的函数片段,由子类来进行实现,从...
分类:
编程语言 时间:
2014-06-17 18:48:34
阅读次数:
325
为了支持c++的多态性,才用了动态绑定和静态绑定。理解他们的区别有助于更好的理解多态性,以及在编程的过程中避免犯错误。需要理解四个名词:1、对象的静态类型:对象在声明时采用的类型。是在编译期确定的。2、对象的动态类型:目前所指对象的类型。是在运行期决定的。对象的动态类型可以更改,但是静态类型无法更改...
分类:
编程语言 时间:
2014-06-15 11:47:11
阅读次数:
206
面试中有关C++的若干问题By 晴天,
2014.5.16晚什么是多态?简要说一下C++中的多态的概念。(1)定义:多态是指相同对象收到不同消息或者不同对象收到相同消息产生不同的行为。(2)C++中多态分为两种a)
编译时多态(静态绑定) 通过函数重载来实现b) 运行时多态(动态绑定) 通过虚函数来...
分类:
编程语言 时间:
2014-05-17 20:34:07
阅读次数:
347