#include <iostream>
using namespace std;
// 多繼承
class Parent1
{
public:
void setP1(int a, int b)
{
this->a = a;
this->b = b;
}
void show1 ()
{
printf ("a = %d, b = %d\n", a, b);
}
public:
int a;
int b;
};
class Parent2
{
public:
void setP2(int c, int d)
{
this->c = c;
this->d = d;
}
void show2 ()
{
printf ("c = %d, d = %d\n", c, d);
}
public:
int c;
int d;
};
class Child : public Parent1,public Parent2
{
public:
void setC(int e)
{
this->e = e;
}
void showC()
{
printf ("e = %d\n", e);
}
public:
int e;
};
// 類型兼容性原則在多繼承中同樣適用,基類指針會根據基類成在派生類中的排布做偏移
int main()
{
Child c1;
c1.a = 1;
c1.b = 2;
c1.c = 3;
c1.d = 4;
c1.e = 5;
Child *pc = &c1;
Parent1 *p1 = &c1;
Parent2 *p2 = &c1;
p1->show1();
p2->show2();
printf ("pc = %p\n", pc);
printf ("p1 = %p\n", p1);
printf ("p2 = %p\n", p2);
return 0;
}
#include <iostream>
using namespace std;
// 多繼承
class Parent1
{
public:
int a;
int b;
};
class Parent2
{
public:
int a;
int d;
};
class Child : public Parent1,public Parent2
{
public:
int e;
};
// 多繼承中的二義性: 通過類名 和 域解析符解決
int main()
{
Child c1;
c1.Parent1::a = 1;
return 0;
}
多繼承
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.