//現在的疑問是:既然虛函式表的訪問指標已經被破壞,那怎麼又會調到虛的析構函式呢。
#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 在幕後為你所寫 所...