码迷,mamicode.com
首页 > 其他好文 > 详细

多态性 与 静态绑定

时间:2015-07-17 11:16:15      阅读:170      评论: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
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!