C++ 多态 (virtual)

来源:互联网 发布:腾讯大数据平台优势 编辑:程序博客网 时间:2024/06/05 12:14

C++ 多态 (virtual)

#include <iostream>using namespace std;class A{    public:    A():i(10){}    virtual void f() {cout<< "A::f()" << i <<endl;}    int i;};class B:public A{    public:    B(): j(11){}    virtual void f() {cout<< "B::f()" << j <<endl;}    int j;};int fun(A* p){    cout << p->i << endl;     p->f();}int main (int argc, char *argv[]){    A a;    B b;    A *p = &a;    int *r = (int *)&a; //a 的 虚表 的地址    int *t = (int *)&b; //b 的 虚表 的地址    *r = *t; //将 b 虚表的地址, 赋值给a    p->f(); // p指针调用 b 虚表的 f() 函数    a = b; //直接赋值,virtual不生效    a.f();    cin.get();}