原创 函數重載與參數缺省值共用可能引起兩意性

函數重載與參數缺省值共用可能引起兩意性 函數的重載與函數的參數缺省值都使得程序的設計和書寫與人類的自然語言更接近,極大地方便於我們面向對象。但是,如果把這二者合起來用,卻又可能會發生兩意性問題。讓我們觀察下面的例子:    例2‑

原创 有了const和inline,宏定義就‘光榮退休了’嗎?

  有了const和inline,宏定義就‘光榮退休了’嗎? 我的書稿還對流行的教科書存在的一些問題進行了探討,例如‘++’運算符重載函數的返值問題等。筆者相信,連教科書都會出現的問題一定具有探討的必要。 在書稿中隱去了發生問題

原创 好文章:裘宗燕:C/C++ 語言中的表達式求值

裘宗燕:C/C++ 語言中的表達式求值經常可以在一些討論組裏看到下面的提問:“誰知道下面C語句給n賦什麼值?” m = 1; n = m+++m++;最近有位不相識的朋友發email給我,問爲什麼在某個C++系統裏,下面表達式打印出兩個

原创 const引用的用途

const引用的用途 const引用也是應用在函數調用的傳參方面。假設我們希望能確保被調函數不會改變主調函數數據的值,那麼使用const引用傳參既確保了被調函數不會改變主調函數的數據,又不會像非指針、非引用的參數那樣要發生複製,因而

原创 徹底解剖C++引用機制-彙編級別的深層探索

徹底解剖C++引用機制-彙編級別的深層探索 此文是我與陳翼男博士共同研究,此文深究其理,欲精通C++者不可不察。 C++的引用是一個非常重要的概念。它是被引用的變量的別名,它本身不是變量,它應該與被引用的變量代表同一個地址的內容;而

原创 析構函數的名字是否包括字符‘~’?

析構函數的名字是否包括字符‘~’? 我的書稿還對流行的教科書存在的一些問題進行了探討,筆者相信,連教科書都會出現的問題一定具有探討的必要。 在書稿中隱去了發生問題的教科書的名字,但是在博客文章中我將指出這些書的名字。 孟威、劉慧寧

原创 前綴++類重載函數的返值爲類名是不妥的-與呂鳳翥老師等商榷

前綴++類運算符重載函數的返值是類名的討論-與呂鳳翥老師等商榷 我的書稿還對流行的教科書存在的一些問題進行了探討,筆者相信,連教科書都會出現的問題一定具有探討的必要。 在書稿中隱去了發生問題的教科書的名字,但是在博客文章中我將指出

原创 前綴++類重載函數的返值是void或int都不妥-與諸位老師商榷

    前綴++類重載函數的返值是void或int都不妥-與諸位老師商榷 我的書稿還對流行的教科書存在的一些問題進行了探討,筆者相信,連教科書都會出現的問題一定具有探討的必要。 在書稿中隱去了發生問題的教科書的名字,但是在博客

原创 定義函數的指針,C++和C不同是因爲函數重載

定義函數的指針,C++和C不同是因爲函數重載 在C語言裏,一個指針可以指向一個函數。這個指針也有兩個屬性,但一個是函數的入口地址,另一個是函數的返值類型。例如下面的程序,它在C語言裏是正確的: int time12(int i)

原创 C++支持缺省參數值並非僅僅爲了函數調用靈活

C++支持缺省參數值並非僅僅爲了函數調用靈活 與其說C++支持缺省參數值是爲了讓巨人寫的函數適用於各種小人,不如說是爲了讓巨人寫的類適用於各種小人。 帶有缺省參數值的函數最常見的是構造函數。構造函數是爲了創建對象的,所以缺省參數值

原创 細說C++的初始化問題

細說C++的初始化問題 其實初始化問題在C語言中就十分重要,它與賦值運算的區別許多教科書強調的很不夠,那個時候還不太要緊,但是在C++中必須要區分得十分清楚,任何馬虎都是不允許的,這是因爲這是因爲初始化符對象將引起構造函數的調用,而

原创 請大家看一看我國教材的粗製濫造和抄襲能達到怎樣的程度

我於2002年、2003年、2004年在北京民辦大學教授C++,使用的教材是經濟科學出版社2000年出版的全國高自考指定教材,作者是中國科技大學的教授劉振安、ISBN:7-5058-1997-6/G.422,書中錯誤多如牛毛,我每次在課

原创 理解C語言刁鑽定義語句的斬麻快刀:自內向外讀

理解C語言刁鑽定義語句的斬麻快刀:自內向外讀   今天在CSDN論壇見到 A_Zhao 發表於2012-06-18 06:41:16《關於C語言聲明、指針、數組、函數、typedef...》引起論壇推薦和朋友們的熱議。A_Zhao的

原创 符號‘::’有時候不是運算符

符號‘::’有時候不是運算符 在自然語言裏,一個單詞的確切含義往往要有它所處的句子來決定,即所謂上下文(context)。C語言和C++都是利用這種一字多用,來減少符號的數量。它的所謂‘運算符’往往出現在表達式以外,這個時候其實它不

原创 函數重載機制的奧祕

函數重載機制的奧祕 C++是怎麼區分同名的函數呢?原來是編譯器悄悄使用了一個稱作名字分裂規則的機制。 現代民俗給女孩子起名喜歡‘娜’、‘薇’等字,一個班出現兩個‘李娜’,不是什麼新鮮事,然而老師居然也能應付。老師是怎麼做的呢?老師把她們