21.重载与重写(Overloading and Overriding Are Different)

王朝other·作者佚名  2006-01-09
宽屏版  字体: |||超大  

Item 21. Overloading and Overriding Are Different

Overloading : 重载

Overriding :重写

1、Overloading 与 Overriding 是两个不同的概念

Overloading 是指在同一个作用域中有两个或多个函数拥有相同的名字不同的签名。函数的签名包括:参数的数量和类型,const属性。当编译器发现存在一个以上的具有相同名字的函数,它就会调用其中一个匹配的函数。

Overriding 是指子类有一个函数与父类中的某个虚函数的名字和签名都相同。当一个子类的对象调用该虚函数时,就会执行子类中Overriding 的那个函数。所以Overriding 改变的是类的行为而不是类的借口。

2、eg

class B {

public:

//...

virtual int f( int );

void f( B * );

//...

};

class D : public B {

public:

int f( int ); //Overriding B::f(int) (虚函数的问题)

int f( B * ); //overload D::f(int),而不是B::f(B *) (作用域的问题)

};

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
© 2005- 王朝网络 版权所有