C、C++數組初始化:
數組的概念:一組由同種類型元素順序排列而成的結構類型。
兩個特點:1,數組元素類型相同,2,各個元素放在連續內存區域內。
C、C++不提供數組越界檢測,有效數組訪問空間0-n-1。
數組初始化:
Int a[5] = {0}; 將全部元素初始化為0,而
Int b[5] = {1}; 僅僅將第一個元素初始化為1,而將其余n-1個元素初始化為0;
Int c[] = {1,2,3,4,5};自動使得數組長度為5.
C++模板類和類模板的區別:
[cpp]
template <class T>
class A{
public:
A {};
~A{};
void show()
{
cout<< n <<endl;
};
void setN( T mn)
{
n = mn;
};
private:
T n;
}
template <class T>
class A{
public:
A {};
~A{};
void show()
{
cout<< n <<endl;
};
void setN( T mn)
{
n = mn;
};
private:
T n;
}
上面定義的是一個類模板,在編譯如下語句:
A<int> a;
時,編譯器將用類模板生成模板類:
[cpp]
class A{
public:
A {};
~A{};
void show()
{
cout<< n <<endl;
};
void setN( int mn)
{
n = mn;
};
private:
int n;
}
class A{
public:
A {};
~A{};
void show()
{
cout<< n <<endl;
};
void setN( int mn)
{
n = mn;
};
private:
int n;
}
然後通過這個模板類來實例化對象a。
同樣模板函數和函數模板也是一樣的,編譯器實際上不會為函數模板或類模板生成任何代碼。
還有一點要明確的是,類模板是一個模板,即一個類屬,而模板類是一個類。類模板可以做函數的參數。
模板類,類模板,函數模板和模板函數的關系:
一個類模板在類層次結構中
既可以是基類也可以是派生類:
類模板可以從模板類派生
類模板可以從非模板類派生
模板類可以從類模板派生
非模板類可以從類模板派生
運算符重載:
友員函數重載運算符常用於運算符的左右操作數類型不同的情況。
運算符函數可以重載為成員函數或友員函數。 其關鍵區別在於成員函數具有this 指針,而友員函數沒有,成員函數可以少傳遞一個參數對象。
不管是成員函數還是友員函數重載,運算符的使用方法相同。 但傳遞參數的方法不同,實現代碼不同,應用場合也不同。
最好應用友元函數的場合:
1.第一個參數為內部類型變量。
2.如果運算符的操作數(尤其是第一個操作數)希望有隱式轉換,則 必須用友員函數重載。
C++中不能用友元函數重載的運算符:
= ()【】->
單目運算符重載:
<函數類型> operator++(); //前綴運算符 ++<對象> 成員函數解釋為 <對象>.operator++(),友元函數解釋為 friend <對象>.operator++(A &a)
<函數類型> operator++(int); //後綴運算符 <對象>++ 成員函數解釋為 <對象>.operator++(0),友元函數解釋為 friend <對象>.operator++(A &a, 0);
後綴運算符的重載為了和前綴運算區別增加了一個偽參數。
C 格式化輸入輸出:
printf函數:
附加函數說明
含義
l
用於長整形數據的輸出,可以加在格式符:u,x,o,d,比如ld%表示以10進制的形式,輸出長整形數字
m(一個正整數)
輸出最小數據的最小寬度,如果數據實際寬度超過m,則按實際寬度輸出,如果小於m,則左端補0或者空格,右對齊
.n(一個正整數)
對於實數,表示輸出n位小數;對於字符串,表示截取的字符個數
-m(一個負整數)或者單獨一個-號
輸出字符或者數字左對齊
scanf函數
附加格式說明
說明
l
用來輸入長整形數據(可用於%ld,%lo,%lx);用來輸入double類型數據(可以用%ld或者%le)
h
用來輸入短整型數據(可以用於%hd,%ho,%hx)
字段寬度(一個正整數)
用來指定輸入數據所占的寬度(列數)
*
用來表示輸入項在輸入後不賦給相應變量