C 編譯器對虛函式和普通成員函式的處理方式

2021-05-26 13:16:18 字數 550 閱讀 5213

//現在的疑問是:既然虛函式表的訪問指標已經被破壞,那怎麼又會調到虛的析構函式呢。

#include

using namespace std;

class cpoint

int getx() const

int gety() const

virtual ~cpoint()

/*第乙個是注掉pa->fun()這行

[student@sep4020 objectmemery]$ ./a.out 

x = 200

y = 10

呼叫fun()

呼叫析構函式

[student@sep4020 objectmemery]$ vim objectmemery.cpp 

[student@sep4020 objectmemery]$ g++ objectmemery.cpp 

[student@sep4020 objectmemery]$ ./a.out 

x = 200

y = 10

呼叫fun()

段錯誤*/

C 普通函式 虛函式和純虛函式

首先 強調乙個概念 定義乙個函式為虛函式,不代表函式為不被實現的函式 定義他為虛函式是為了允許用基類的指標來呼叫子類的這個函式 定義乙個函式為純虛函式,才代表函式沒有被實現 定義他是為了實現乙個介面,起到乙個規範的作用,規範繼承這個 類的程式設計師必須實現這個函式。對繼承的影響 普通的類 沒有虛函式...

從編譯器角度理解虛函式和繼承

在c 中,繼承的概念可以理解為c中得巢狀結構體,對於各種函式,類中的成員函式,類中的友元函式,各種繼承的虛函式,只要從編譯器的角度去理解 就會變得簡單。例如下例 class d class d1 public d class d2 public d1 函式的具體實現略 int main int ar...

C 編譯器會為類新增哪些成員函式

乙個空的class在c 編譯器處理過後就不再為空,編譯器會自動地為我們宣告一些member function,如果你寫 class empty 就相當於 class empty 這是網上流傳的答案,而且在侯捷翻譯的中文簡體 effective c 2nd 有介紹 條款45 弄清c 在幕後為你所寫 所...