[TOC] c++是一種中級語言,是c的擴充,是一種面向對象的程式設計語言,可以運行到多個平臺。這裡直接講語法。 基礎c++模板: javascript 函數類型 函數名(參數表);例如: int max(int x,int y,int z); int ...
目錄
c++是一種中級語言,是c的擴充,是一種面向對象的程式設計語言,可以運行到多個平臺。這裡直接講語法。
基礎c++模板:
#include <iostream>
using namespace std;
int main()
{
cout << "Hello, world!" << endl;
return 0;
}
一:初級知識
1.輸入輸出
標準輸入輸出流cout和cin,分別代表輸入流對象和輸出流對象,在頭文件iostream中定義。鍵盤和顯示器是電腦的標準輸入輸出設備,標準流是直接不需要打開文件就可以操作的流式文件。
輸出:cout和輸出運算符<<配合使用,<<作為輸出信息的"插入運算符",可以輸出多個輸出項,把內容依次插入到輸出流cout中,不需要類型判斷。
輸入:cin和輸入運算符>>配合使用,>>作為輸入信息"提取運算符",可以輸入多個輸出項,從輸入設備鍵盤提取數據到cin中。
endl(end of line)代表回車換行操作。
c++允許對變數的聲明放在程式的任何位置(但必須在使用該變數之前)。
2.用const定義常變數
c語言的#define只是預編譯時進行的字元置換,不占用記憶體單元。而c++中用const定義常變數,具有變數的屬性,有數據類型,占用存儲單元,可以用地址指向它,在程式運行過程中的值是固定的。
3.函數定義和聲明
在c++中。如果函數調用的位置在函數定義之前,則要求在函數調用之前必須對所調用的函數作函數原型聲明。一般形式是:
# 函數類型 函數名(參數表);例如:
int max(int x,int y,int z);
int max(int,int,int);
在編譯時只檢查參數類型,不檢查參數名。
4.函數的重載
c++允許在同一作用域中用同一函數名定義多個函數,這些函數的參數個數和參數類型不相同,用來實現不同的功能。,這就是函數的重載,即一個函數名多用。
下麵是一個例子:
# 第一個函數
int a(int a,int b){}
# 第二個函數
float a(float a,float b){}
# 第三個函數
long a(long a,long b){}
這裡要註意的是,參數的個數和類型至少有一個不同,返回值可以相同也可以不同,但不允許參數個數和類型相同而只有返回值不同。
5.函數模板
這個函數模板就是建立一個通用函數,這個函數的函數類型和形參類型不具體指定,用一個虛擬的類型代表,在調用函數時系統會根據實參的類型來取代模板中的虛擬類型,實現了不同函數的功能。定義模板的一般形式為:
# template <typename T1,typename T2,typename T3> 或者:
# template <class T1,class T2,class T3>
下麵是一個例子:
template <typename T>
T show(T a,T b){}
使用函數模板比函數重載更方便,更簡單,但是只適合函數的參數個數相同而類型不同,且函數體相同的情況。
6.有預設參數的函數
c++在函數調用時給形參一個預設值,就減少了重覆。實參個數和形參個數不需要相同。但是預設參數要放在形參列表中的最右端,否則可能就會被覆蓋,或者參數不夠而報錯。
要註意的是必須在函數調用之前在函數定義(定義在調用前)或者函數聲明(定義在調用後)進行給出預設值。而且定義和聲明都給預設值的情況下,取聲明的值,因此最好只在函數聲明時指定預設值。
一個函數不能既作為重載函數,又作為有預設參數的函數,會出現二義性。
7.變數的引用
在c++中,變數的引用就是變數的別名。如下:
int a;
int &b = a; #聲明b是一個整型變數的引用,初始值為a
這裡的&是"引用聲明符",並不代表地址,在聲明一個引用時,必須同時進行初始化,代表哪一個變數。
在建立引用時只有聲明,沒有定義。
引用的註意事項:
(1)引用必須與某一種類型的數據相聯繫。
(2)引用與其所代表的變數共用同一記憶體空間。
(3)區分&a是聲明引用變數還是取地址,就看前面有沒有類型符。
(4)可以給一個變數聲明多個引用。
(5)引用在初始化後不能再被重新聲明為另一個變數的別名。
8.變數的引用作為函數參數
c++之所以增加"引用",是為了利用它作為函數參數,是為了讓函數的數據傳遞更方便。函數的參數傳遞只要有以下兩種情況。
將變數的引用作為形參:
c++把變數的引用作為函數形參,就可以指向同一地址單元。對引用型形參的初始化是在函數調用時通過虛實結合實現的。
引用和使用指針變數做函數形參的區別:
使用引用不必使用指針變數,就不需要另外開闢記憶體空間,調用時實參不必加&,系統直接傳的是實參的地址,也不必使用指針運算符*。
引用細節:
(1)不能建立void的引用。
(2)不能建立引用的數組。
(3)可以將變數的引用的地址賦給一個指針,此時指針指向的是原來的變數。但是不能直接建立指向引用類型的指針變數。
int a = 2;
int &b = a;
int *p = a; #p相當於a變數的地址
(4)可以建立指針變數的引用
int i = 3;
int *b = &a;
int* &pt= b #pt相當於b
(5)可以用const對引用加以限定,不允許改變引用的值
int i = 3;
const int &a = i; #聲明常引用,不允許改變i的值
(6)可以用常量或表達式對引用進行初始化,但此時必須用const做聲明
int i = 3;
const &a = i + 2;
上面的const &a = i + 2;語句相當於:
int temp = i + 2; #臨時變數在內部實現,用戶不能訪問
const int &a = temp;
也可以用不同類型的變數進行初始化:
double d = 3.252;
const int &a = d;
相當於:
int temp = d;
const int &a = temp;
此時a的值為3.
上面是c++的基礎,之後的文章會向大家介紹c++的一些高級的語法。