静态重载,动态重载

qbwjly 2012-03-31 09:59:03
哪位大虾能给我讲哈c++的静态重载和动态重载!
...全文
210 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复 1
所谓静态重载就是函数重载,比如:


int f();
double f(int);
void f(double);


这三个函数就是静态重载,函数重载就在相同的作用域中,函数的名字相同,而参数不同,函数的返回类型不是关键,返回类型可以相同也可以不相同。

动态重载是相对于基类和派生类来说,基类有虚函数并且派生类中又重写了基类中的虚函数,当用基类的指针或引用来指向派生类对象,并进行调用虚函数时,会发生动态绑定,也就是动态重载,注意基类中的虚函数与

派生类中的虚函数的参数必须完全相同,返回类型也相同,但有一个例外,当基类中的虚函数的返回类型是基

类指针或引用时,派生类中与基类中相同的虚函数的返回类型可以是派生类类型的指针或引用,因为派生类类

型的指针或引用可以转换为基类类型的指针或引用,但基类类型的指针或引用不能转换为派生类类型的指针或引用。
下面是动态绑定:


#include <iostream>
using namespace std;
class a{
public:
virtual void f()
{cout << "a::f()"<<endl;}
};
class b:public a
{
public:
virtual void f()
{cout << "b::f()"<<endl;}
};
int main()
{
a c;
b d;
a *pa;
b *pb;
pa = &c;
pb = &d;
pa->f();
pb->f();

pa = &d;
pa->f();

return 0;
}
输出:a::f()
b::f()
b::f()


西山小月 2012-03-31
  • 打赏
  • 举报
回复
自己翻书去!

64,685

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧