Time of Update: 2018-12-04
11風格 11.1 標示符命名與定義 建議11.1 類命名以大寫字母開頭,中間單詞也以大寫開頭 樣本: class UrlTable; class UrlTableProperties; 11.2 排版 建議11.2 類的聲明按照一定的次序進行,關鍵字不縮排 說明:類的聲明按照一定的次序和規範進行。建議的次序如下: 按照存取控制特性段排序:public、protected、private,如果沒有可以忽略。這個排序是讓聲
Time of Update: 2018-12-04
【線程的概念】為了瞭解線程的概念,我們必須先討論一下進程的概念。 一個進程通常定義為程式的一個執行個體。在Win32中, 進程佔據4GB的地址空間。與它們在MS-DOS和16位Windows作業系統中不同, Win32進程是沒有活力的。這就是說,一個Win32進程並不執行什麼指令,它只是佔據著4GB的地址空間,此空間中有應用程式EXE檔案的
Time of Update: 2018-12-04
8 標準庫 STL標準模板庫在不同產品使用程度不同,這裡列出一些基本規則和建議,供各團隊參考。 規則8.1 避免使用auto_ptr 說明:在stl庫中的std::auto_ptr具有一個隱式的所有權轉移行為,如下代碼: auto_ptr<T> p1(new T); auto_ptr<T> p2 = p1; 當執行完第2行語句後,p1已經不再指向第1行中分配的對象,而是變為NULL。正因為如此,auto_ptr 不能被置於各種標準容器中。
Time of Update: 2018-12-04
There are many facets of the spirit of C, but the essence is a community sentiment of the underlying principles upon which the C language is based ( C Rationale Introduction ) .1.Trust the programmer . 相信程式員。2. Keep
Time of Update: 2018-12-04
編程風格指南的使用要點在於提供一個公用的編碼規範,所有人可以把精力集中在實現內容而不是表現形式上。我們給出了全域的風格規範,但局部的風格也很重要,如果你在一個檔案中新加的代碼和原有代碼風格相去甚遠的話,這就破壞了檔案本身的整體美觀也影響閱讀規則之例外前面說明的編碼習慣基本是強制性的,但所有優秀的規則都允許例外。 1. 現有不統一代碼(Existing Non-conformant
Time of Update: 2018-12-04
/*竊以為好的程式能在各種編譯器中運行,故代碼編寫者需謹慎,並瞭解某些真相!*/int main(){int a=42;printf("%d\n",a);}上面的小程式有什麼問題呢?你能想起幾條來呢?加上以下幾點才是接近“正確的”的C程式。1.#include<stdio.h>2.return 0;程式啟動並執行結果是:在螢幕上列印42,並換行。其實,上述兩條修改之外,還可以有所改進的-----3. int main(void)再看下面的小程式:#include<stdio.
Time of Update: 2018-12-04
C++批判的批判 1,typedef不必要?a,typedef提供了一層間接,物件導向語言中,介面掩蓋了運行時不同具體類型間的差別,而typedef掩蓋了編譯時間不同類型間的差別,卻又不喪失型別安全b,一般語言只能返回“值”,而typedef提供了返回“類型”的能力,這是模板元編程不可或缺的機制,除非模板元編程眼下也是不必要的2,匯入在不同地點分別對#include,private成員放在標頭檔中,inline函數也放在標頭檔中進行了批判,實際上原因只有一個:C++不是平台,它沒有二進位標準,
Time of Update: 2018-12-04
Linux下C開發編輯器:VI編譯器:選擇GNU C/C++編譯器gcc調試器:應用廣泛的gdb函數庫:glibc系統標頭檔:glibc_header若想開發圖形介面,還需選上GNOME(c)/KDE(c++)軟體開發IDE:(大多數人還是直接使用gcc)Kylix:號稱Linux下的DephiKdevelopRHIDE:類似Turbo C++
Time of Update: 2018-12-04
shell的輸入與輸出主要包括:echo命令read命令cat命令管道tee命令標準輸入、輸出和標準錯誤重新導向echo [-e] [-n] stringstring : 字串,可以含 shell 變數、轉義符等, 一般用雙引號括起來-e : 讓 echo 解釋 string 中的轉義符-n : 禁止 echo 輸出後輸出 NEWLINE(換行)cat [-n][-b][-t][-e] file1 file2 ...cat
Time of Update: 2018-12-04
編譯預先處理三種預先處理命令1.宏定義2.包含檔案 #include3.條件編譯定義 #define S(a,b) a*b引用 S(a+c,b+c)展開 a+c*b+c條件編譯#define DEBUG //調試版本,在發布版本中把這句刪除,那麼程式中調試部分不會起作用情況一:#if常量運算式 程式段1#else 程式段2#endif情況二:#ifef 標識符 //是否已經定義 程式段1#else 程式段2#endif常見:#ifdef
Time of Update: 2018-12-04
話說總結下C檔案編譯過程.首先假設有這麼一段經典C程式:#include <stdio.h>int main(){printf("hello\n");return 0;}首先將上述程式儲存為標準的ASCII文字檔hello.c.於是乎編譯之,系統開始這麼處理:前置處理器開始介入,對該檔案進行預先處理,也即文本替換,把#後面的一大堆替換掉,比如上面那程式中第一行的#include
Time of Update: 2018-12-04
1.C++的虛函數是怎樣實現的?
Time of Update: 2018-12-04
論C++標準委員會制定的一條不合理的標準C++標準委員會不讓for後()中定義的變數在外邊用,我覺的非常不合理在我做的太極語言中是這樣設計的,()中的名字註冊進入首個含名字空間的母垣(垣的概念大家都知道了吧),中間如果經過了{}則要加序號標記。for()中定義的變數讓不讓在外邊用曾經是一個爭議挺大的問題.在太極語言中是這樣考慮的:單獨從for本身考慮兩方面的意見不好確定,把目光放向全域.就是看()中定義的變數是否要全地區可見.在太極語言中講究"做一件事情只要一句話",讓緊密關聯的代碼能寫在一句中
Time of Update: 2018-12-04
C++設計的一個缺陷,是否應該提交給C++標準委員會呢?——不必強制類普通成員函數在類體中聲明類普通成員函數非得在類中聲明了才能在外邊寫成員函數,C++為什麼非得設計成這樣呢?1.如果想增加一個函數,那麼同樣的函數頭要寫兩遍,這違反了資訊唯一原則。造成難於維護難於同步等問題。2.想在庫外為庫中的類增加成員函數在目前的這種設計下是不可能的。比如我想為MFC庫的CString類增加一個自訂的tostring()函數就做不到。我想應該這樣設計,類普通成員函數可以直接在外部定義,而不用在類中聲明比如CS
Time of Update: 2018-12-04
C++設計的又一個缺陷,是否應該提交給C++標準委員會呢?——建構函式與解構函式名稱不應該用類名如果用類名,那麼就是一個資訊冗餘class test{ test(); test(int,int,char *); test(...); ...}現在我要更改test為test2,就需要更改四個地方,維護困難。class test2{ test2(); test2(int,int,char *); test2(...);
Time of Update: 2018-12-04
“C++之父BS說林銳錯了”之原因前天發了一個貼子“C++之父BS說林銳錯了”C++之父的C++聖經《C++程式設計語言
Time of Update: 2018-12-04
很多時候,我希望能用一個變數方便的表示多種狀態.例如我有一個視窗類別,要表示此視窗是否具有系統功能表,最小化按鈕,最大化按鈕,協助按鈕,可能需要四個變數來記錄.bool hasSystemMenu;bool hasMinimize;bool hasMaximize;bool hasHelp;這樣要佔用更多的記憶體.雖然用位域可以節約記憶體,但操作不方便. DELPHI這點就做得不錯,用set of 關鍵字聲明一個集合類型資料.如下: TWindowButton =
Time of Update: 2018-12-04
一直用emacs寫c++程式,有時候要在.cpp和.h檔案中切換,下面的代碼可以實現這個功能(綁定到了F11上),要使用的話添加到.emacs檔案中即可,鬱悶的是調試的時候,因為太久沒用Regex了,忘了"."符號有特殊的含義而沒有加轉義符,花了不少時間來查錯 :-( .另外也有.hpp結尾的C++源碼檔案(例如boost),有需要時可以修改;;定義在cpp檔案和.h檔案中切換的函數;;;###autoload(defun switch-source-file ()
Time of Update: 2018-12-04
接上篇,時間不夠,寫得較亂我上一篇給C++添加屬性機制的文章中,讓屬性類得到目標類的類指標,我使用了一個INIT_PROPERTY宏,在前幾天和龍子龍孫聊天時,他告訴了我一個技巧,得到類成員在類中的位移地址,如下(int)(&((type_name*)NULL)->member_name) 例如我有個類 Aclass A{public: virtual int show() {} int i1, i2;};則 (int)(&((A*)NULL)->i2)
Time of Update: 2018-12-04
網友“圖靈評論”的一篇“C++失去競爭力了嗎?《C/C++ User's