C++ Primer 學習筆記_106_特殊工具與技術,primer_106
特殊工具與技術--局部類
可以在函數體內部定義類,這樣的類稱為局部類。一個局部類定義了一個類型,該類型只在定義它的局部範圍中可見。與嵌套類不同,局部類的成員是嚴格受限的。
局部類的所有成員(包括函數)必須完全定義在類定義體內部,因此,局部類遠不如嵌套類有用。
實際上,成員完全定義在類中的要求限制了局部類成員函數的複雜性。局部類中的函數很少超過數行代碼,超過的話,閱讀者會難以理解代碼。
類似地,不允許局部類聲明 static 資料成員,沒有辦法定義它們。
1.局部類不能使用函數範圍中的變數
局部類可以訪問的外圍範圍中的名字是有限的。局部類只能訪問在外圍範圍中定義的類型名、static 變數和枚舉成員,不能使用定義該類的函數中的變數:
int a,val;void foo(int val){ static int si; enum Loc {a = 1024,b}; class Bar { public: Loc locVal; int barVal; void fooBar(Loc l = a)//OK { barVal = val; //Error,打算使用的函數形參內的val,不行! barVal = ::val;//OK,使用的是全域變數val barVal = si;//OK,使用的static變數 locVal = b;//OK,使用的是enumerator } };}
2.常規保護規則適用於局部類
外圍函數對局部類的私人成員沒有特殊訪問權,但是,局部類可以將外圍函數設為友元.
[實踐]
實際上,局部類中private成員幾乎是不必要的,通常局部類的所有成員都是public成員.局部類封裝在它的局部範圍中,進一步通過資訊隱藏進行封裝是不必要的.
3.嵌套的局部類
可以將一個類嵌套在局部類內部。這種情況下,嵌套類定義可以出現在局部類定義體之外,但是,嵌套類必須在定義局部類的同一範圍中定義。照常,嵌套類的名字必須用外圍類的名字進行限定,並且嵌套類的聲明必須出現在局部類的定義中:
void foo(int val){ class Bar { public: //... class Nested; }; class Bar::Nested { //... };}
嵌套在局部類中的類本身是一個帶有所有附加限制的局部類.嵌套類的所有成員必須在嵌套類本身定義體內部定義.
C程式設計語言與C Primer Plus哪個好?
前者僅是入門的書,如果你想用C入門編程就看這個,以後學C++,或者JAVA再深入即可,C primer plus 是最全面的。。想往C方面發展可以看下,而且他也是一本工具書,想深入學習C還要多看看C底層之類的書,如C的編譯器實現。還有C語言的彙編知識
學完c primer plus學什?
看到樓主看過很多書,這樣的好處是知識面廣,壞處是容易不專精,個人強烈建議:
明確目標—明確程式設計語言——選一本好書好好讀,好好編程(手動編程才是重點)——選好多書(同一程式設計語言)做工具書——開始實現目標
另外,如果只是為了實踐(企業門戶,辦公平台性質網站)之類的應用的話,學習資料結構用處是不大的。應用演算法早已做好存入相關類庫了,若非興趣使然(愛好編演算法,好奇。。。),協助真心不會太大的。
組合語言。。首先不太實用於視窗設計。。理解困難,使用困難,若非要做嵌入式相關的東西,真心用不著。若你真有興趣,現在的編譯器都內建反組譯碼,可以看看玩玩。
做企業門戶,辦公平台性質網站,那必然是php和mysql以及HTML,你可以用dreamweaver和wamp等環境做,我當初學的時候用的是《細說php》,至於HTML,網上到處是入門級文檔,基本是用來做美工介面的,dreamweaver很簡單就能做到。
除了php,java也是不錯的選擇,雖然我不瞭解,但是java在網站維護之類上還是很有力的,這方面不瞭解,只能作為一個提議了。