如何學好C++ 談一下我個人的看法

第一步: c++入門的書籍看一看,同時將自己有問題的地方隨時記下來,方便上機實現第二步:全面學習階段,C++ Primer ,等一系列知名度很高的書籍.先看中文,後看外文.實驗方法同步驟1第三步:學習C++的資料結構方面的書籍,學一門語言不去用相應的資料結構來打磨,就不知道這門語言能做什麼,不能做什麼.最好是國外的資料結構書籍翻譯過來的,上面有很多中等難度的實驗可以一邊學習演算法,一邊學習C++語言,同時掌握解決問題的思路和方法.第四步:學習STL,比如Effective STL

麻雀雖小五髒俱全 現代C++思想 值得推敲

真正的C++        (1)不提倡指標        (2)提倡資料抽象,提倡使用類        (3)提倡使用庫                                ------<<C++沉思錄>>本文中問題的解決很好的體現了以上幾點,如果不想學習C++誤入歧途,陷入方言.請仔細研讀本程式的實現思路,雖然它不是本人原創.//       問題條件:文字檔中有如下學生資料//       

Andrew Koenig 的一些建議 C++沉思錄

1  如果你靠評價編譯工具謀生,這樣做當然很好,否則就調入了一個陷阱工具是擷取結果的手段,如果你只注意到手段而忽視了結果,就是在waste time     2  some part of C is essential,這些思想你應該成為習慣,if not ,do it.不要一次又一次的區分指標數組和指向數組的指標的差別,以及指向常量的指標和常量指標的區別.應該一勞永逸的掌握.一部分必須要掌握的,否則你就要經常去查相關資料void call_each(void (**a)(void) ,

more effective c++ 第一章讀書筆記: 指標,引用,c++類型轉換,多態數組,預設建構函式

這是一本很不錯的書,推薦大家去看。當然書中說的不一定完全對,讀者需要自己去思考和理解。 本文記錄的是我自己的一些看法。 條款一: 區分指標和引用。 當然,這是個老生常談的話題。作者從語義上討論了兩者的適用情況。引用由於聲明的時候必須初始化,而且初始化之後,再也不能引用別的對象,而指標聲明的時候不需要初始化,初始化後指標還是可以指向別的對象。而且書中有這樣一個例子:char* pc = 0;char& rc = *pc;我個人覺得這不是一個很好的例子。因為這明擺了就是對一個null

關於c++IO的效率

自己寫了一段測試程式,比較c++ IO讀和c語言的IO讀的效率:   long tickcount = GetTickCount();//取得系統啟動後的時間(miliseconds)    int k = 0;cout << "For c API   " << endl; for (int i = 0; i < 10000; ++i){FILE* f = fopen("c://temp//test.txt", "rb");if (NULL != f){if

c++重載operator new和operator delete

 1:C++標準說:An allocation function shall be a class member function or a global function; a program is ill-formed if an allocation function is declared in a namespace scope other than global scope or declared static in global

Effective STL – 警惕c++讓人懊惱的解析

 假設你有一個int的檔案,你想要把那些int拷貝到一個list中。這看起來像是一個合理的方式:ifstream dataFile("ints.dat");list<int> data(istream_iterator<int>(dataFile),// 警告!這完成的並不istream_iterator<int>());//

c++異常參數傳遞和普通函數參數傳遞的區別。

從文法上看,在函數裡聲明參數與在catch子句中聲明參數是一樣的,catch裡的參數可以是實值型別,參考型別,指標類型。例如:try{   .....}catch(A a){}catch(B& b){}catch(C* c){}  儘管表面是它們是一樣的,但是編譯器對二者的處理卻又很大的不同。調用函數時,程式的控制權最終還會返回到函數的調用處,但是拋出一個異常時,控制權永遠不會回到拋出異常的地方。class A;void func_throw() {     A a;    

c++對象的記憶體布局(一)

本文主要討論c++對像的記憶體布局。對於一個簡單的或者是複雜的c++類,他在記憶體裡到底是怎麼儲存的呢?每個類都有資料成員和介面,它們的儲存方式一樣嗎?虛函數為什麼會帶來儲存上的開銷?類的靜態成員和非靜態成員有什麼區別呢? 本文將為你揭曉這些問題的答案。 一個空的類: class Test{}c++支援一個空類,這個空類什麼定義都沒有,什麼都不做。那sizeof(Test)是0嗎?答案不是的。sizeof(Test)的大小一般是一。編譯器會插入一個佔位位元組。為什麼呢? 給出以下語句:Test

c++資源大全

 C++ Programmer's Cookbook 語言介紹 大全 (轉來的文章)http://www.cppblog.com/mzty/archive/2007/08/13/29922.htmlC++隨筆分類列表(進階)C++隨筆分類列表(進階):C++精華:61條物件導向的設計原則 http://www.cppblog.com/mzty/archive/2005/12/29/2247.htmlc++資源 http://www.cppblog.com/mzty/archive/2005/11

c++書單

一些同學問我,如何學好C++,我沒有別的辦法給你們,唯一的辦法就是讀書,讀大量的書,就可以解決。要把C++作為日常語言,而不是一種程式語言,這樣就好辦了。有人又要問我,那麼我應該讀什麼書才好?沒有時間怎麼辦?我只能對你們說,沒時間的話,就別學C++了,做你們喜歡做的事。生活中沒有C++,也同樣美好。如果你準備學,一定要學好,那麼我開個書單,應該問題不是甚大。首先肯定要讀一讀Bjarne Stroustrup的The Design and Evolution of C++,瞭解一下這個語言的曆史。

c++的名字尋找

 在C++中,函數編譯時間檢查過程如下:第一步,執行名字尋找(namelookup):在調用類中尋找,並產生候選列表;若候選列表為空白,再擴大尋找範圍(如名 字空間內,或父類);如此迴圈。如果最終無結果,那麼抱歉,就會提示你“名字未能找到”;否則,編譯器跳到第二步。第二步,執行重載辨別(overloadresolution):如果第一步得到的候選者個數大於一,編譯器將以傳遞給函數的參數及其 類型為依據,嘗試找到最佳答案。如果無法據此確定最優者,就會報告“存在二義性調用”。第三步,可見度檢查(ac

more effective c++第二章讀書筆記:c++的運算子,運算子轉換,首碼自增和尾碼自增,operatpr new和operator delete.

條款5:小心使用者自訂的轉換函式 c++允許編譯器在兩種資料類型之間進行隱式類型轉換。(implicit conversion).首先,c++繼承了c語言的類型轉換的策略。除了這個,c++還有兩種隱式轉換: 單個參數的建構函式,以及隱式的類型轉換運算子。單個參數的建構函式是指只傳遞給它一個參數就可以調用的建構函式,這種建構函式可能只定義一個參數,也可以定義多個參數,定義多個參數的時候要求第一個參數後面的所有參數都有一個預設值。下面是兩個例子: class name {    public:   

c++左值與右值的含義與誤區

     術語 “L-Values” 和 “R-Values” 是很容易被搞混的,因為它們的曆史淵源也是混淆。他們最初起源是編譯器的設計者,從字面上來理解就是運算式左邊的值和運算式右邊的值。它們的含義一直在演化而名字卻沒變,現在已經“名”不副“實”了。雖然還是稱為left-right 和right-value,但是他們的含義已經大大不同了。          C++ 03 標準上是這樣寫的: “每一個運算式要麼是一個 lvalue,要麼就是一個 rvalue。”     

c++的POD類型詳解

最早看到POD(plain old data)類型,是在imperfect c++裡。我覺得這是一本把我帶到c++世界裡的一本很重要的書。書裡是這樣解釋POD的: 1、   所有標量類型(基本類型和指標類型)、POD結構類型、POD等位型別、以及這幾種類型的數組、const/volatile修飾的版        本都是POD類型。 2、  POD結構/等位型別:一個彙總體(包括class),它的非static成員都不是pointer to class member、      

c和c++的微妙的不同

在c++中存在,在c語言中卻不存在的限制有: 1. 完整的函數原型聲明是必須的,c語言裡沒這麼嚴格.2. c++中,由typedef定義的名字不能與已有的結構標籤衝突,但是c語言中卻是可以的.3. 當void*指標賦值給另一個類型的指標時,c++規定必須進行強制類型轉換,但是c語言中卻不必要。 在c++和c中含義不一樣的特性:1. c++中增加了至少十幾個關鍵字2. c++中,聲明可以出現在語句可以出現的任何地方,在c語言的代碼塊中,所有的聲明必須出現在所有語句的前面。3.

c++ 的new 數組操作

今天群裡一個朋友問到:有class A,1. A* pa = new A[3]  2. pa[0] = A();3. pa[1] = A();4. pa[2] = A(); 5. delete []pa; 建構函式和解構函式是怎麼調用的?  在1裡,new A[3] 首先會分配記憶體,然後調用A的預設建構函式來初始化這個數組。所以在這裡A的建構函式被調用了3次。記住,這裡只能調用A的預設建構函式。如果A沒有預設構造函數,那麼會有編譯錯誤。 什麼叫預設建構函式?就是參數列表為Void的建構函式。 

一個c/c++函數調用棧的實現

函數調用棧的實現。可用於實現簡單的指令碼解譯器。聲明:#pragma onceconst int BUFFERSIZE = 1024;const int growfactor = 2; // this stack is used as call stack.class TStack{private:size_t size;   // the stack lengthsize_t pos;   // the stack top position   char *buffer;  // the

c++異常處理,異常聲明,捕獲異常

 C++捕獲異常的一些規則: 1.    非MFC的c++異常應該用過引用來捕獲。使用引用來捕獲異常不需要刪除c++異常對象。因為使用引用捕獲的異常對象會在棧中傳遞。而且保持了多態性,使得你捕獲的異常正是你拋出的異常對象。使用指標捕獲異常的話,需要你刪除異常對象。使用值捕獲的話,會導致對象的slicing問題。更詳細的資訊見Effective  C++第13條.2.    MFC異常應該通過指標來捕獲。因為它們通常從堆中分配。當你處理完異常之後,你需要調用Delete成員函數。如下所示:   

多項式的線性運算與乘法運算(C++思想實現)

在看了《C++沉思錄》之後很久,覺得C++之強大!對自己想要的東西才去實現,不需要的放在一邊,天生就是敏捷開發。總是在不斷擴充現有的,而不去改變原來的。下面的多項式加減運算,係數運算總體屬於  多項式的線性運算:multinational.h #pragma once#include <iostream>using namespace std;//multinomial is designed as follow://a(n)*x^e(n)+a(n-1)*x^e(n-1)+...+

總頁數: 4314 1 .... 1178 1179 1180 1181 1182 .... 4314 Go to: 前往

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.