11.cerr 標準錯誤流,和cout相比,cerr的輸出沒有緩衝,cout是把一句話一句話的輸出,而cerr一個字符一個字符的輸出。
測試:
#include<iostream>
using namespace std;
void main()
{
cout<<"hello this is cout"<<endl;
cerr<<"hello this is cerr"<<endl;
}
12.連續的case之間如果沒有語句那麼執行下一個有語句的case的語句。
比如:
switch(a)
{
case 1:
case 2:a++;
}
相當於
switch(a)
{
case 1:a++;
case 2:a++;
13.自動變量:具有自動存儲器的變量,局部變量默認是自動變量。
自動存儲器:程序執行到他們的語句塊時被創建,一般作用域是離他最近的花括號。
14.將頻繁使用的變量用register聲明,以建議編譯器將變量存儲在計算機的高速寄存器中,減小開銷,一般放在自動變量聲明的前面,但現在優化的編譯器大多可以自動識別哪些變量被頻繁使用,不需要regiser聲明。
15.static聲明的局部變量僅被其聲明的函數所知,但是和自動變量不同的是,函數退出後仍然保留了他的值,等下次調用直接使用這個值,而不用重新賦值。
16.c++中可以使用::number來訪問全局變量,前提是局部變量和全局變量的名字一樣。
17.函數重載不能只是返回的類型不同,形參個數或者類型也必須不同。
18.函數模板,與函數重載的區別是,如果不同數據類型的操作一樣,那就用模板,如果不一樣,那就函數重載。
#include<iostream>
using namespace std;
template <class T>
T max(T a,T b,T c)
{
T maxi;
maxi=a;
if(b>maxi)
{
maxi=b;
}
if(c>maxi)
{
maxi=c;
}
return maxi;
}
void main()
{
int a=1;
int b=2;
int c=3;
int ma;
ma=max(a,b,c);
cout<<ma<<endl;
}