7-28晚复习 虚继承与地址分配
生活随笔
收集整理的這篇文章主要介紹了
7-28晚复习 虚继承与地址分配
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
//內(nèi)存單元地址分配、構(gòu)造 的順序與繼承的順序有關(guān)
#include <iostream>
#include <string>
using namespace std;class A
{
public:int m_a;~A(){cout << "~~A" << endl;}
};class A1 :virtual public A
{
public:int m_a1;A1(int a1){m_a1 = a1;cout << "A1" << endl;}~A1(){cout << "~~A1" << endl;}};class A2 :virtual public A
{
public:int m_a2;A2(int a2){m_a2 = a2;cout << "A2" << endl;}~A2(){cout << "~~A2" << endl;}
};class C :public A1,public A2
{
public:int m_c;C(int c) : A1(c), A2(c){m_c = c;cout << "CCCCCCCCC" << endl;}~C(){cout << "~~CCCCCCCCC" << endl;}
};int main()
{C c1(1);cout << sizeof(c1) << endl; cout << "&c1 = " << &c1 << endl;cout << "&c1.A1::m_a " << &c1.A1::m_a << endl;cout << "&c1.m_a1 = " << &c1.m_a1 << endl;cout << "&c1.A2::m_a " << &c1.A2::m_a << endl;cout << "&c1.m_a2 = " << &c1.m_a2 << endl;cout << "&c1.m_c = " << &c1.m_c << endl;//虛繼承就是把 父類里的變量的地址分配 往后放, 先分配自己的地址cout << "虛繼承就是把 父類里的變量的地址分配 往后放, 先分配自己的地址" << endl;cout << "&c1.m_a1 = " << &c1.m_a1 << endl;cout << "&c1.m_a2 = " << &c1.m_a2 << endl;cout << "&c1.m_c = " << &c1.m_c << endl;cout << "&c1.A1::m_a " << &c1.A1::m_a << endl;cout << "&c1.A2::m_a " << &c1.A2::m_a << endl;//對(duì)應(yīng)的虛繼承在其最前面分配一個(gè)指針(占四個(gè)字節(jié)) 指向 虛繼承來的變量地址(在最后面)system("pause");return 0;
}
#include <iostream>using namespace std;class A
{
private:int m_a;
public :A(){cout << "A constuctor" << endl;}void print(){cout << "AAAAAAAAA" << endl;}
};class B :public A
{
private:int m_b;
public:B(){cout << "B constuctor" << endl;}void print(){cout << "BBBBBBBB" << endl;}
};int main()
{A a1;B b1;a1 = b1;A *p1 = new A;//父類指針指向父類對(duì)象A *p2 = new B;//父類指針只愛想子類對(duì)象(向下轉(zhuǎn)型)p2->print();B *p3 = new B;//子類指針指向子類對(duì)象system("pause");return 0;
}
?
總結(jié)
以上是生活随笔為你收集整理的7-28晚复习 虚继承与地址分配的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 7-28-下午复习
- 下一篇: 7-28作业直接刷一下