@孫鑫C++小記

來源:互聯網
上載者:User

@剛弄的獨立部落格:http://blog.forgetwind.com,歡迎來踩。

1:類型轉換的前提,記憶體模型匹配。
2:C++多態性:
當C++編譯器在編譯的時候,發現A類的print是虛函數,這個時候C++就會採用
遲綁定(late binding)的技術,在運行時依據對象的類型(在程式中,我們 
傳遞的B類的首地址)來確認調用的哪一個函數,這種能力叫做C++的多態性。
(編譯時間確定-normal,or,運行時確定-virtual)


#include <iostream>
using namespace std;

class A {
public:
A() {}
~A() {}
virtual void print() {
cout << "A" << endl;
}
};

class B : public A {
public:
B() {}
~B() {}
virtual void print() {
cout << "B" << endl;
}
};

int main() {
B b;
A *a =&b;
a->print();
//late binding,看print是否在B類中存在,存在則調用衍生類別的print
return 0;
}

3:根據繼承性的原理,基類中的this指標指向衍生類別的對象。
(@孫鑫C++視頻3_測試程式,可調式看運行過程)

#include <iostream>
using namespace std;

class A;
A *pt = NULL;

class A {
public:
A() {
pt = this;
}

virtual void print() {
cout << "基類A的this指標指向A的對象" << endl;
}
};

class B: public A {
public:
B() {}
virtual void print() {
cout << "基類A的this指標指向B的對象" << endl;
}
};
B test;//調用基類的建構函式時,pt指向A中的this。

int main() {
pt->print();
return 0;
}

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.