c++筆記4

wuqindeyunque發表於2018-02-12

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;
}

相關文章