之前說過c++有三種儲存資料的方式,分別是自動儲存,靜態儲存,動態儲存,到了c++11之後又出了乙個新的儲存方式就是執行緒儲存持續性。如果變數使用關鍵字thread_local宣告的,那麼生命週期與所屬執行緒一樣長。
用register關鍵字修飾的變數,最初是由c語言引進來的,它建議編譯器用cpu暫存器來儲存自動變數,但是到了c++11之後,完全就是起到乙個相容的作用,相容舊**而已,顯示指出變數是自動變數。
一種是定義宣告,一種是引用宣告。定義宣告給變數分配空間,引用宣告則不需要,引用宣告是引用已有變數,一般用extern修飾,且不用初始化,一旦使用了初始化就相當於定義該變數。
int b;
//definition
int a=
0;//definition
extern
int b;
//declaration, b is defined elsewhere
extern
int b=7;
//definition
多個檔案使用外部變數
extern
int cats=20;
//definition because of initialization
int dogs=20;
//definition
int fleas;
//definition
extern
int dogs;
//use dogs from file1.cpp
extern
int cats;
//use cats from file1.cpp
int a=5;
#include
int a=6;
//it is error, static int a=6 is ok(a will be seen in file2.cpp only)
intmain()
靜態區域性變數這種變數作用域為定義塊內,但是生命週期貫穿程式始終,而且它只能夠被定義初始化一次,不會被重複初始化或者定義。
using宣告使特定的標示符可用,using編譯指令使整個命名空間可用。
比如using namespace std以及using std::cin,前者為編譯指令,後者為using宣告
對介面的一點認識
以前雖然老師一直反覆強調介面的重要,並且要求我們寫任何程式之前都嘗試先寫介面,但是由於自己淺顯的認識,一直覺得寫介面就是多此一舉,自己先寫好介面,寫好方法,在繼承去實現方法,這不是多此一舉嗎?直接在類裡寫完所有方法不就完了嗎?但隨著學習的繼續,越來學懂得介面的重要性,並且也嘗試寫介面,這裡,想先寫一...
關於lexical cast,一點補充
看了凌傑的文章 http blog.csdn.net owl2008 archive 2004 09 28 119595.aspx 也想補充兩句。lexical cast比起stringstream來說,的確不一定簡潔,當然,其語義和可讀性都有提高,但同時也失之靈活。例如下面的情況,似乎就無法用le...
關於lexical cast,一點補充
看了凌傑的文章 也想補充兩句。lexical cast比起stringstream來說,的確不一定簡潔,當然,其語義和可讀性都有提高,但同時也失之靈活。例如下面的情況,似乎就無法用lexical cast辦到。include using namespace std int main int,char...