原创 EffectiveC++第三章構造函數析構函數和賦值操作符學習筆記

條款11: 爲需要動態分配內存的類聲明一個拷貝構造函數和一個賦值操作符 這個缺省的賦值操作符會執行從a的成員到b的成員的逐個成員的賦值操作,對指針(a.data和b.data) 來說就是逐位拷貝。  用delete去刪除一個

原创 EffectiveC++第七章雜項學習筆記

條款45: 弄清C++在幕後爲你所寫、所調用的函數 當C++編譯器通過它的時候。如果你沒有聲明下列函數,體貼的編譯器會聲明它自己的版本。這些函數是:一個拷貝構造函數,一個賦值運算符,一個析構函數,一對取址運算符。另外,如果你

原创 基類析造函數是純虛函數時,則必須在中實現其方法

#include <iostream> #include <string> using std::cout; using std::endl; cl

原创 關於c++名字解析的一個問題:名字空間污染

 編譯環境是 gcc version 4.5.1 (tdm-1) 和 Microsoft Visual Studio 2010 10.0.30319.1 RTMRel 操作系統是 Windows7 旗艦版 問題: #in

原创 EffectiveC++第四章類和函數:設計與聲明學習筆記

條款18: 爭取使類的接口完整並且最小 #include <iostream> #include <string>using std::cout;using std::endl;namespace sun {  enu

原创 C + + 對 象 的 內 存 布 局

前言   07年12月,我寫了一篇《C++虛函數表解析》的文章,引起了大家的興趣。有很多朋友對我的文章留了言,有鼓勵我的,有批評我的,還有很多問問題的。我在這裏一併對大家的留言表示感謝。這也是我爲什麼再寫一篇續言的原因。因爲,在上一篇文章

原创 C++中建立對象間消息連接的一種系統方法——回調函數

用過C++進行過面向對象程序設計的用戶都知道,程序中的對象很少單獨存在。不考慮對象間的相互作用幾乎是不可能的。所以,標識對象間的關係或建立對象間的消息連接是面向對象程序設計的一項重要任務。本文着重從C++程序設計的角度,提出一種建立

原创 ADL關聯名字查找(1)

如果給定一個函數名,那麼c++編譯器如何去查找這個函數呢? 1.普通的名字查找     對變量的調用,一般是按scope的大小來的 #include<iostream>#include<string>using namespac

原创 C++ 虛函數的深入思考 -動態綁定案例

使用virtual在類中定義虛函數,是爲了實現多態。它是一個動態綁定,晚綁定技術。我們在學數組的時候就明白一個道理,如果知道數組的大小的,就直接定義: 1 int a[100]; 但是,如果我們不確定數

原创 effective c++ 條款12 賦值對象時勿忘其每一個成員

當我們自己爲class設計 copy構造函數和copy assignment操作符時,如果我們漏掉一個成員變量時,編譯器並不會友好的告訴你,當然有時候我們也是故意這樣做。當我們擔起“爲派生類寫copy 函數”時責任重大,必須

原创 網絡協議學習方法

        網絡這東西就是一個靠實踐的東西,只靠看書是不行的。當年在學校還上過史美林教授/張公忠教授所講的計算機網絡體系結構課,用的是Tanabaum寫的那本,考試還得了九十多分,可實際還是連TCP和UDP有什麼區別都分不清,就是死

原创 初始化成員列表

那我們爲什麼要用初始化成員列表,什麼時候用初始化成員列表來初始化成員數據呢?Lippman的《C++ Primer》中提到在以下三種情況下需要使用初始化成員列表:   一,需要初始化的數據成員是對象的情況; 二,需要初始化const修飾的

原创 C語言不進行類型檢查 和函數可以不進行前向聲明

編譯器爲gcc4.5 #include <stdio.h> int main() {     printf("%d\n",add(3)); printf("%d\n",add('c')); printf("%d\n",add(3.2))

原创 EffectiveC++第六章繼承和麪向對象設計學習筆記

條款35: 使公有繼承體現 "是一個" 的含義     當寫下類D("Derived" )從類B("Base")公有繼承時,你實際上是在告訴編譯器(以及讀這段代碼的人):類型D的每一個對象也是類型B的一個對象,但反之不成立;

原创 codeblocks 設置vs2010編譯器

    默認是GCC的編譯器,CodeBlocks是不自帶其他的編譯器的,如果本機有安裝列表中的其他編譯器的話設置一下就可以用了。 設置編譯器(rc.exe,link.exe,cl.exe)所在的文件夾 Program File