读书人

多态解决方法

发布时间: 2013-01-21 10:15:38 作者: rapoo

多态
Class a{

Public:
Virtual f();
};

Class b: public class b{
Public:
F();
};

B b.f();
A* p=new b();
P->f();

两种都是运行行动态绑定吗
[解决办法]


class A
{
public:
virtual void f()
{

}
};

class B :public A
{
public:
void f()
{
printf("%s\n","CALL");
}
};

int main()
{
B b;
b.f(); //和普通成员函数没有区别,属于静态绑定,即在编译的时候就知道要调用哪个f函数
A* p=new B();//属于动态绑定,即在运行的时候才能知道要调用哪个f函数
p->f();
return 0;
}

读书人网 >C++

热点推荐