C++ Inheritance
来源:互联网 发布:淘宝卖家怎么入驻一淘 编辑:程序博客网 时间:2024/05/26 19:19
----------- Class A---------------
class A
{
public:
virtual void foo1() { printf("in A::foo1()/n");};
virtual void foo2() { printf("in A::foo2()/n"); }
public:
A():a1('A') {};
int a1;
};
[X+0x0]:0x21420
[X+0x4]:0x41
----------- Class B---------------
A
/
B
class B : public A
{
public:
virtual void foo1() { printf("in B::foo1()/n"); }
virtual void foo2() { printf("in B::foo2()/n"); }
public:
B():b1('B'),b2('B') {};
int b1;
int b2;
};
[X+0x0]:0x215c8
[X+0x4]:0x41
[X+0x8]:0x42
[X+0xc]:0x42
----------- Class B (virtual inheritance)---------------
A
/ (virtual)
B
class B : virtual public A
{
public:
virtual void foo1() { printf("in B::foo1()/n"); }
virtual void foo2() { printf("in B::foo2()/n"); }
public:
B():b1('B'),b2('B') {};
int b1;
int b2;
};
[X+0x0]:0x21640 #virtual table of class B
[X+0x4]:0x42
[X+0x8]:0x42
[X+0xc]:0x21640+0x10 #virtual table of class A
[X+0x10]:0x41
----------- Class D --------------
A
/ /
B C
/ /
D
class B : public A
{
public:
virtual void foo1() { printf("in B::foo1()/n"); }
virtual void foo2() { printf("in B::foo2()/n"); }
public:
B():b1('B'),b2('B') {};
int b1;
int b2;
};
class C : public A
{
public:
virtual void foo1() { printf("in C::foo1()/n"); }
virtual void foo2() { printf("in C::foo2()/n"); }
public:
C():c1('C'),c2('C'),c3('C') {};
int c1;
int c2;
int c3;
};
class D : public B, public C
{
public:
virtual void foo1() { printf("in D::foo1()/n"); }
virtual void foo2() { printf("in D::foo2()/n"); }
public:
D():d1('D'),d2('D'),d3('D'),d4('D') {};
int d1;
int d2;
int d3;
int d4;
};
[X+0x0]:0x219d8
[X+0x4]:0x41
[X+0x8]:0x42
[X+0xc]:0x42
[X+0x10]:0x219d8+0x10
[X+0x14]:0x41
[X+0x18]:0x43
[X+0x1c]:0x43
[X+0x20]:0x43
[X+0x24]:0x44
[X+0x28]:0x44
[X+0x2c]:0x44
[X+0x30]:0x44
----------- Class D (virtual inheritance)---------------
A
/ / (virtual)
B C
/ /
D
class B : virtual public A
{
public:
virtual void foo1() { printf("in B::foo1()/n"); }
virtual void foo2() { printf("in B::foo2()/n"); }
public:
B():b1('B'),b2('B') {};
int b1;
int b2;
};
class C : virtual public A
{
public:
virtual void foo1() { printf("in C::foo1()/n"); }
virtual void foo2() { printf("in C::foo2()/n"); }
public:
C():c1('C'),c2('C'),c3('C') {};
int c1;
int c2;
int c3;
};
[X+0x0]:0x21b20
[X+0x4]:0x42
[X+0x8]:0x42
[X+0xc]:0x21b20+0x18
[X+0x10]:0x43
[X+0x14]:0x43
[X+0x18]:0x43
[X+0x1c]:0x44
[X+0x20]:0x44
[X+0x24]:0x44
[X+0x28]:0x44
[X+0x2c]:0x21b20+0x28
[X+0x30]:0x41
---------------------------------------------------------------------------------------------------------
#include <iostream>
using namespace std;
class A
{
public:
virtual void foo1() { printf("in A::foo1()/n"); };
virtual void foo2() { printf("in A::foo2()/n"); }
public:
A():a1('A') {};
int a1;
};
//class B : virtual public A
class B : public A
{
public:
virtual void foo1() { printf("in B::foo1()/n"); }
virtual void foo2() { printf("in B::foo2()/n"); }
public:
B():b1('B'),b2('B') {};
int b1;
int b2;
};
//class C : virtual public A
class C : public A
{
public:
virtual void foo1() { printf("in C::foo1()/n"); }
virtual void foo2() { printf("in C::foo2()/n"); }
public:
C():c1('C'),c2('C'),c3('C') {};
int c1;
int c2;
int c3;
};
class D : public B, public C
{
public:
virtual void foo1() { printf("in D::foo1()/n"); }
virtual void foo2() { printf("in D::foo2()/n"); }
public:
D():d1('D'),d2('D'),d3('D'),d4('D') {};
int d1;
int d2;
int d3;
int d4;
};
int main()
{
#define X D
X d;
int * p = (int *)&d;
int size = sizeof (X)/4;
for (int i=0;i<size;i++)
if ((*(p+i)) > (*p))
printf("[X+0x%x]:0x%x+0x%x/n", i*4,(*p), (*(p+i)) - (*p));
else
printf("[X+0x%x]:0x%x/n", i*4,(*(p+i)));
}
- C++.Homework.Inheritance.01
- C++.Homework.Inheritance.02
- C++Notes06_继承(Inheritance)
- Inheritance
- Inheritance
- Inheritance
- Inheritance
- [C++]D&A 5 Collection with Inheritance
- C++(12):单继承(single inheritance)
- C++(13):多继承(multiple inheritance)
- Question 35: Protected, or private, inheritance, as opposed to public inheritance, models which type of relationship in C++?
- 继承 Inheritance
- private inheritance
- C++ Inheritance
- C++ Inheritance
- C++ inheritance
- Prototype Inheritance
- Inheritance Puzzle2
- 2.15 典型正则表达式解释(2)
- oracle 24个日期函数介绍
- 一颗开花的树
- 格式化相关
- Microsoft Word 对象
- C++ Inheritance
- 更新ADT遇到问题,requires plug-in "org.eclipse.wst.sse.ui"
- 基于oracle的大型协同OA 平台
- 一步一步破解 JIRA3.6
- linux内核查找和源代码下载
- 虚函数深入浅出 :) (转贴)
- oracle字符串函数
- Linux/FreeBSD下用C语言开发PHP的so扩展模块例解
- 2.15 典型正则表达式解释(1)