c++ 重载

来源:互联网 发布:淘宝助理下载订单不全 编辑:程序博客网 时间:2024/06/16 02:19

http://bbs.chinaunix.net/space.php?uid=7672252   thanks OwnWaterloo

heap 堆

stack 栈

 

overload  重载

override 覆盖

hide        隐藏

replace    替换

 

有时候容易混淆上面的4中情况为重载

 

区别:

 

1.replace

 

c++ 提供了默认的  void* operator new(size_t s);

而我写了一个自己的版本就是 替换replace;

 

2.overload

 

int min(int a, int b);

double min(double a, double b);

 

具有相同名字, 但是参数不同的函数之间互为overloaded

根据调用处的实际参数,决定了实际的调用的函数

 

3.hide

上述 相同的名字 有一个前提:在一个查找的作用域内

 

那么:

 

4.override  覆盖

 

通过基类的指针或者引用操作某个派生类的对象,调用某个虚函数

派生类可以通过override,使得该虚函数调用派生类中的版本,而不是基类的。

 

overload事编译时的概念,override 试运行时的概念

 

这一类叫做 hide 派生类中的名字会隐藏基类中的名字,使得基类的名字没有参与重载的资格

 

但是与上面的名字空间的例子类似,可以通过using 引入基类的名字

 

运行时可以通过传入不同的B的派生类 影响test的最终行为

 

gcc xxx.cpp -o a.out  编译完毕后, a.out的行为依然可以修改:
a.out D1
a.out D2

overload的影响在编译时决定, 不会拖到运行时。
override的影响在编译时会决定一部分, 最终还会被运行时影响。

原创粉丝点击