文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>c++的虚函数与对象切割

c++的虚函数与对象切割

时间:2010-12-10  来源:Repository

#include <iostream.h>

class ClassA
{
public:
    void fun1();
    void fun2();
    virtual void fun3();
};

void ClassA::fun1()
{
    cout << "ClassA.fun1"<<endl;
};

void ClassA::fun2()
{
    cout << "ClassA.fun2"<<endl;
};

void ClassA::fun3()
{
    cout << "ClassA.fun3"<<endl;
};


class ClassB : public ClassA
{
public:
    void fun1();
    void fun2();
    virtual void fun3();
};

void ClassB::fun3()
{
    cout << "ClassB.fun3"<<endl;
};

class ClassC : public ClassB
{
public:
    void fun1();
    void fun2();
    virtual void fun3();
};

void ClassC::fun3()
{
    cout << "ClassC.fun3"<<endl;
};

void main()
{
    ClassA *a[3];
    ClassA a1;
    ClassB b1;
    ClassC c1;


    a1.fun3();
    b1.fun3();
    c1.fun3();

    a[0] = &a1;
    a[1] = &b1;
    a[2] = &c1;
    cout << "virtual function array test" <<endl;
    for(int i=0;i<3;i++)
    {
        a[i]->fun3();
    }

    cout << "((ClassA)&b1).fun3():";
    ((ClassA*)&b1)->fun3();
    //object slicing
    cout << "object slicing"<<endl;
    cout <<"((ClassA)b1).fun3():"; 
    ((ClassA)b1).fun3();
}


   如果你知道结果,请回复!以后我再解释virtual function是怎么实现多态的!

 

相关阅读 更多 +
排行榜 更多 +
野生恐龙射击生存安卓版

野生恐龙射击生存安卓版

飞行射击 下载
战场狙击手

战场狙击手

飞行射击 下载
1v1布娃娃射击安卓版

1v1布娃娃射击安卓版

飞行射击 下载