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;
void fooA(){}
virtual void func(){ cout << "A func." << endl; }
virtual void funcA(){ cout << "fucnA." << endl; }
};
class B
{
public:
virtual ~B(){ cout << "B destruction" << endl; }
int b;
void fooB(){}
virtual void func(){ cout << "B func." << endl; }
virtual void funcB(){ cout << "funcB." << endl; }
};
class C:public A,public B
{
public:
virtual ~C(){ cout << "C destruction" << endl; }
int c;
void fooC(){}
virtual void func(){ cout << "C func." << endl; }
virtual void funcC(){ cout << "funcC." << endl; }
};
int main()
{
cout << sizeof(A) << " " << sizeof(B) << " " << sizeof(C) << endl;
A *pa = new C;
B *pb = new C;
C *pc = new C;
pa->func();
pb->func();
pc->func();
delete pb;
delete pa;
delete pc;
return 0;
}
实例二
#include
using namespace std;
class base;
base *pbase;
class base
{
public:
base()
{
pbase = this;
}
virtual void fn()
{
cout << "base" << endl;
}
};
class derived:public base
{
void fn()
{
cout << "derived" << endl;
}
};
derived aa;
int main()
{
pbase->fn();
return 0;
}
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:
};
class B
{
public:
};
class C:public A,public B
{
public:
};
int main()
{
}
实例二
#include
using namespace std;
class base;
base *pbase;
class base
{
public:
};
class derived:public base
{
};
derived aa;
int main()
{
}
C++对象的内存布局
http://blog.csdn.net/zyq0335/article/details/7658391
http://blog.csdn.net/haoel/article/details/3081328