首页 > 其他 > 详细

多态性 与 静态绑定

时间:2015-07-17 11:14:29      阅读:171      评论:0      收藏:0      [点我收藏+]

#include<iostream>
using namespace std;

class A
{
public:
void foo()
{
printf("1\n");
}
virtual void fun()
{
printf("2\n");
}
};
class B : public A
{
public:
void foo()
{
printf("3\n");
}
void fun()
{
printf("4\n");
}
};
int main(void)
{
A a;
B b;
A *p = &a;
p->foo(); //1 不是虚函数,静态绑定,根据指针类型,编译期决定调用的函数
p->fun(); //2 是虚调用,迟绑定,调用基类的func()

p = &b;
p->foo(); //1 不是虚函数,静态绑定,根据指针类型,编译期决定调用的函数
p->fun(); // 4 是虚调用 迟绑定,调用子类的fun()

B* ptr = (B*)&a;
ptr->foo(); // 3 不是虚函数,静态绑定,根据指针类型,编译期决定调用的函数
ptr->fun(); // 2 虚函数迟绑定,调用基类的fun()
return 0;
}

多态性 与 静态绑定

原文:http://www.cnblogs.com/niupan369/p/4653576.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!