考研自习(一)
考研自習(一)
- 前言
- C++簡介(超級簡短)
- 文件Program File
- 頭文件Head File
- 源文件Sourse File
- 第一個程序Hellow Word
- CPP作用域分隔符
- CPP命名空間
- 什么是命名空間與為什么使用命名空間
- 如何使用命名空間
- 流插入操作符“<<”
- 總結(日記)
- 規劃
前言
北理工的學姐說,C++是基礎,你得會。如果復試線下,有上機的話,這就是王炸。
學習C++,本質是為了考研復試,因此我們重點學習C++的STL,其他一筆帶過,帶有明確的方向進行學習,效率會高一點。
本篇對C++的學習進行初步總結和規劃。
C++簡介(超級簡短)
C++又叫C Plus Plus 即CPP,由Bjarne Stroustrup 發明。
C++是一種OOP的語言,我之前已經先行學過Java,因此已經能很好的理解面向對象的概念,此處不再加以贅述。C和C++的主要區別在于C是過程式編程語言,不支持類和對象,而C++是過程式和面向對象編程語言的結合;因此C++可以被稱為混合語言。
我們在編碼時要注意編碼規則
文件Program File
頭文件Head File
后綴名為 .h
源文件Sourse File
后綴名為 .cpp
第一個程序Hellow Word
#include<iostream>int main() {std::cout << "Hellow World" << std::endl;return 0; }以前C語言都是使用的printf,這里使用namespace std
其中的std是命名空間,CPP中std為標準的命名空間,冒號為作用域分隔符,接下來詳細學習一下這種我之前從沒正經研究過的語句。(以前我只知道這玩意能輸出一行String)
CPP作用域分隔符
用法:
作用域名::變量(對象、函數)名表示該變量(對象、函數)屬于這個作用域
例如:
我們可以看出來,兩個類的函數重名時,我們通過對函數名指定命名空間的方法,實現了區分。
再如果兩個文件中都使用了
單獨編譯是不會有問題的,但是連接在一起使用的時候,就會報錯;
這里不得不提一下這個關鍵詞
如果我們其中有一個文件的a,使用了extern這個關鍵字進行修飾,就代表本文件中的變量是外部其他文件中已定義的變量,由此聲明,編譯時外部文件的變量a的作用域就擴展到了本文件,運行時就不會有報錯了。
但是在一個有若干個人完成的大型程序中,不同的人分別定義了類,放在不同的頭文件中,在主文件中需要這些類時,就有可能出現在不同的頭文件中使用了相同的名字來命名類和函數,這樣就會在程序中出現命名沖突。
顯然這就需要提出方法來解決這個問題,所以才有了命名空間這個概念。
CPP命名空間
什么是命名空間與為什么使用命名空間
大型程序往往會使用多個獨立開發的庫,這些庫又會定義大量的全局名字,如類、函數和模板等。當應用程序用到多個供應商提供的庫時,不可避免地會發生某些名字相互沖突的情況。多個庫將名字放置在全局命名空間中將引發命名空間污染(namespace pollution)。
傳統上,程序員通過將其定義的全局實體名字設得很長來避免命名空間污染問題,這樣的名字中通常包含表示名字所屬庫的前綴部分。這種解決方案顯然不太理想:對于程序員來說,書寫和閱讀這么長的名字費時費力且過于繁瑣。
命名空間(namespace)為防止名字沖突提供了更加可控的機制。命名空間分割了全局命名空間,其中每個命名空間是一個作用域。通過在某個命名空間中定義庫的名字,庫的作者以及用戶可以避免全局名字固有的限制。
所謂命名空間,實際上就是一個程序設計者命名的內存空間,設計者可以根據需要指定一些有名字的空間域,把一些全局實體分別放在各個命名空間中,從而與其他全局實體分隔開來。
這樣,其中的a和f()仍然是全局變量,只是隱藏在命名空間中。若要在程序中使用他們,必須要加上命名空間名和作用域分辨符“::”,如namespace1::a,這被稱為命名空間限定。
如何使用命名空間
取別名
namespace namespace1{int a = 10;int f(); } namespace ns1=namespace1;使用using在命名空間申明
例如我們一開始的hellowWorld,又可以寫作
又比如
#include<iostream> namespace ns1 { int a = 10; } namespace ns2 { int a = 9; } using ns1::a; using namespace std; int main() {cout << a << endl;return 0; }最終就會輸出10
還有一種特殊的,無名字的命名空間
例如文件A中有
由于沒有名字,其他文件是無法引用到的,只有A自己可以使用
最后再說我們最開始HellowWorld里的標準命名空間std(standard)
標準c++庫里的所有標識符都是在一個名為std的命名空間里定義的,或者說標準頭文件(如iosteram)中函數,類,對象和類模板都是在命名空間std中定義的。
這樣,在程序中要使用c++標準庫時,就需要使用std作為限定。
流插入操作符“<<”
之后是
cout <<"hello World"<<endl;里的“<<”,它被稱為流插入操作符。意思是將下面的東西插入到前面的那個對象里面進去。
在這段代碼中,cout是作為std的一個標準輸出對象,所以
cout <<"hello World"的意思是將"hello World"插入到輸出流中
同時這個操作符在同一行中是可以連續使用的,比如我們這個語句
就是連續把"hello World"和endl插入cout
endl這個對象代表換行
以上就是對這行C語言和Java語言中都沒接觸到相關語法的代碼的學習與理解。
總結(日記)
今天找了找C++該學什么,該怎么學,開始了最基礎的學習。
慣例敲出了第一個CPP文件代碼HellowWorld,也學習了一些CPP獨有的語法知識。
今天還復習了高數有關函數的基礎知識,書暫時還沒寄到,因此還沒有正式系統的開始復習。
去醫院檢查后,醫生說手即便再動手術,也不見得能夠完全康復,神經的恢復是以年為單位的,因此不建議我再次手術松解,因為功能已經恢復90%以上了,因此這個寒假我決定不做手術了,直接開始考研復習生活。
規劃
明天快速過一遍CPP課程中與Java和C共通的語法,在接下來的幾天里進一步的學習CPP的位運算符和STL,等到考研參考書寄到家以后開始每日背單詞與高數復習刷題。
關于劇本最后的決定是,寫一個推理劇本,《一別四年》的構思更適合畢業劇,還早,有待琢磨。
總結
- 上一篇: 举个栗子!Tableau技巧(60):轻
- 下一篇: DMZ 主机的 Windows 共享文件