c++面试题

来源:互联网 发布:php任务注册系统源码 编辑:程序博客网 时间:2024/06/05 23:41
c++多态实现机制详解
http://www.360doc.com/content/13/0528/05/7775902_288693506.shtml
http://blog.csdn.net/zyq0335/article/details/7657465
实例一
#include
using namespace std;

class A
{
public:
    virtual~A(){ cout << "A destruction" << endl; }
    int a;
    voidfooA(){}
    virtual voidfunc(){ cout << "A func." << endl; }
    virtual voidfuncA(){ cout << "fucnA." << endl; }
};

class B
{
public:
    virtual~B(){ cout << "B destruction" << endl; }
    int b;
    voidfooB(){}
    virtual voidfunc(){ cout << "B func." << endl; }
    virtual voidfuncB(){ cout << "funcB." << endl; }
};

class C:public A,public B
{
public:
    virtual~C(){ cout << "C destruction" << endl; }
    int c;
    voidfooC(){}
    virtual voidfunc(){ cout << "C func." << endl; }
    virtual voidfuncC(){ cout << "funcC." << endl; }
};

int main()
{
    cout<< sizeof(A) << " " << sizeof(B) << " "<< sizeof(C) << endl;
    A *pa = newC;
    B *pb = newC;
    C *pc = newC;
   pa->func();
   pb->func();
   pc->func();

    deletepb;
    deletepa;
    deletepc;
    return0;
}

实例二
#include
using namespace std;

class base;
base *pbase;

class base
{
public:
    base()
    {
       pbase =this;
    }
    virtual voidfn()
    {
       cout<< "base" << endl;
    }
};

class derived:public base
{
    voidfn()
    {
       cout<< "derived" << endl;
    }
};

derived aa;

int main()
{
   pbase->fn();
    return0;
}

C++对象的内存布局

http://blog.csdn.net/zyq0335/article/details/7658391

http://blog.csdn.net/haoel/article/details/3081328


0 0
原创粉丝点击