下面我們來看虛繼承。首先看看這C020類,它從C010虛繼承:}struct C010{ C010() : c_(0x01) {} void fo
假設我告訴你 class(類)D 從 class(類)B publicly derived(公有繼承),而且在 class(類)B 中定義了一個
如果類中存在虛函數時,情況會怎樣呢?我們知道當一個類中有虛函數時,編譯器會為該類產生一個虛函數表,並在它的每一個對象中插入一個指向該虛函數表的指針
為了驗證前面提到過的類型動態轉換(即dynamic_cast轉換),以及對象類型的強制轉換。我們利用前面定義的C041、C042及C082類來進行
在《C++箴言:確保公開繼承模擬“is-a”》一文中論述了 C++ 將 public inheritance(公有繼承)視
從這部分開始我們除了利用內存的信息打印來進行探索外,更多的會通過跟蹤和觀察編譯器產生的匯編代碼來理解編譯器對這些語言特性的實現方式。匯編方面知識的
觸及 multiple inheritance (MI)(多繼承)的時候,C++ 社區就會鮮明地分裂為兩個基本的陣營。一個陣營認為如果 singl
我們再看看虛成員函數的調用。類C041中含有虛成員函數,它的定義如下:struct C041{C041() : c_(0x01) {}virtua
前面已經說過程序就是方法的描述,而方法的描述無外乎就是動作加動作的賓語,而這裡的動作在C++中就是通過語句來表現的,而動作的賓語,也就是能夠被操作
object-oriented programming(面向對象編程)的世界是圍繞著 explicit interfaces(顯式接口)和 run
問題:在下面的 template declarations(模板聲明)中 class 和 typename 有什麼不同?template<c
這次我們看看菱形結構的虛繼承。虛繼承的引入本就是為了解決復雜結構的繼承體系問題。上一篇我們在討論虛繼承時用的是一個簡單的繼承結構,只是為了打個鋪墊
語句是按次序執行的:同一個函數中第一個語句首先執行,接著執行第二個……當然,少數的程序--包括我們需要編寫的解決書店問
毫無疑問,異常規格是一個引人注目的特性。它使得代碼更容易理解,因為它明確地描述了一個函數可以拋出什麼樣的異常。但是它不只是一個有趣的注釋。編譯器在
上一篇中我介紹了一種通過封閉Critical Section對象而方便的使用互斥鎖的方式,文中所有的例子是兩個線程對同一數據一讀一寫,因此需要讓它
線程同步是多線程程序設計的核心內容,它的目的是正確處理多線程並發時的各種問題,例如線程的等待、多個線程訪問同一數據時的互斥,防死鎖等。Win32提
在我們的程序變得更復雜之前,我們先看看C++是如何處理注釋的。注釋可以幫助人們閱讀程序。在典型情況下,它們用於總結算法、表明變量的目的或澄清其它一
為了在運行時處理異常,程序要記錄大量的信息。無論執行到什麼地方,程序都必須能夠識別出如果在此處拋出異常的話,將要被釋放哪一個對象;程序必須知道每一
當你寫一個catch子句時,必須確定讓異常通過何種方式傳遞到catch子句裡。你可以有三個選擇:與你給函數傳遞參數一樣,通過指針(by point
從語法上看,在函數裡聲明參數與在catch子句中聲明參數幾乎沒有什麼差別:class Widget { ... }; //一個類,具體是什麼類//