第一天
C++ 程序可以定義為對(duì)象的集合,這些對(duì)象通過(guò)調(diào)用彼此的方法進(jìn)行交互〉槟埃現(xiàn)在讓我們簡(jiǎn)要地看一下什么是類(lèi)须揣、對(duì)象,方法钱豁、即時(shí)變量耻卡。
對(duì)象 -對(duì)象具有狀態(tài)和行為。例如:一只狗的狀態(tài) - 顏色牲尺、名稱卵酪、品種,行為 - 搖動(dòng)谤碳、叫喚溃卡、吃。對(duì)象是類(lèi)的實(shí)例蜒简。
類(lèi) -類(lèi)可以定義為描述對(duì)象行為/狀態(tài)的模板/藍(lán)圖瘸羡。
方法 -從基本上說(shuō),一個(gè)方法表示一種行為臭蚁。一個(gè)類(lèi)可以包含多個(gè)方法最铁。可以在方法中寫(xiě)入邏輯垮兑、操作數(shù)據(jù)以及執(zhí)行所有的動(dòng)作冷尉。
即時(shí)變量 -每個(gè)對(duì)象都有其獨(dú)特的即時(shí)變量。對(duì)象的狀態(tài)是由這些即時(shí)變量的值創(chuàng)建的系枪。
現(xiàn)在雀哨,來(lái)一份hello word
#include <iostream>
using namespace std;
//main() 是程序開(kāi)始的地方
int main(){
? cout << "hello word!";
? return 0;
}
接下來(lái)我們講解一下上面這段程序:
C++ 語(yǔ)言定義了一些頭文件,這些頭文件包含了程序中必需的或有用的信息。上面這段程序中雾棺,包含了頭文件膊夹。
行using namespace std;告訴編譯器使用 std 命名空間。命名空間是 C++ 中一個(gè)相對(duì)新的概念捌浩。
下一行// main() 是程序開(kāi)始執(zhí)行的地方是一個(gè)單行注釋放刨。單行注釋以 // 開(kāi)頭,在行末結(jié)束尸饺。
下一行int main()是主函數(shù)进统,程序從這里開(kāi)始執(zhí)行。
下一行cout << "Hello World";會(huì)在屏幕上顯示消息 "Hello World"浪听。
下一行return 0;終止 main( )函數(shù)螟碎,并向調(diào)用進(jìn)程返回值 0。
編譯 & 執(zhí)行 C++ 程序
接下來(lái)讓我們看看如何把源代碼保存在一個(gè)文件中迹栓,以及如何編譯并運(yùn)行它掉分。下面是簡(jiǎn)單的步驟:
打開(kāi)一個(gè)文本編輯器,添加上述代碼克伊。
保存文件為 hello.cpp酥郭。
打開(kāi)命令提示符,進(jìn)入到保存文件所在的目錄答毫。
鍵入 'g++ hello.cpp '褥民,輸入回車(chē),編譯代碼洗搂。如果代碼中沒(méi)有錯(cuò)誤消返,命令提示符會(huì)跳到下一行,并生成 a.out 可執(zhí)行文件耘拇。
現(xiàn)在撵颊,鍵入 ' a.out' 來(lái)運(yùn)行程序。
您可以看到屏幕上顯示 ' Hello World '惫叛。
C++ 中的分號(hào) & 塊
在 C++ 中倡勇,分號(hào)是語(yǔ)句結(jié)束符。也就是說(shuō)嘉涌,每個(gè)語(yǔ)句必須以分號(hào)結(jié)束妻熊。它表明一個(gè)邏輯實(shí)體的結(jié)束。
例如仑最,下面是三個(gè)不同的語(yǔ)句:
x=y;
y=y+1;
add(x,y);
塊是一組使用大括號(hào)括起來(lái)的按邏輯連接的語(yǔ)句扔役。例如:
{
cout<<"Hello World";
// 輸出 Hello Worldreturn0;
}
C++ 不以行末作為結(jié)束符的標(biāo)識(shí),因此警医,您可以在一行上放置多個(gè)語(yǔ)句亿胸。例如:
x=y;
y=y+1;
add(x,y);
等同于
x=y;y=y+1;add(x,y);
1. C++ 標(biāo)識(shí)符
C++ 標(biāo)識(shí)符是用來(lái)標(biāo)識(shí)變量坯钦、函數(shù)、類(lèi)侈玄、模塊婉刀,或任何其他用戶自定義項(xiàng)目的名稱。一個(gè)標(biāo)識(shí)符以字母 A-Z 或 a-z 或下劃線 _ 開(kāi)始序仙,后跟零個(gè)或多個(gè)字母突颊、下劃線和數(shù)字(0-9)。
C++ 標(biāo)識(shí)符內(nèi)不允許出現(xiàn)標(biāo)點(diǎn)字符潘悼,比如 @洋丐、$ 和 %。C++ 是區(qū)分大小寫(xiě)的編程語(yǔ)言挥等。因此,在 C++ 中堤尾,Manpower和manpower是兩個(gè)不同的標(biāo)識(shí)符肝劲。
下面列出幾個(gè)有效的標(biāo)識(shí)符:
mohd? ? ? zara? ? abc? move_name? a_123
myname50? _temp? j? ? a23b9? ? ? retVal
三字符組
三字符組就是用于表示另一個(gè)字符的三個(gè)字符序列,又稱為三字符序列郭宝。三字符序列總是以兩個(gè)問(wèn)號(hào)開(kāi)頭辞槐。
三字符序列不太常見(jiàn),但 C++ 標(biāo)準(zhǔn)允許把某些字符指定為三字符序列粘室。以前為了表示鍵盤(pán)上沒(méi)有的字符榄檬,這是必不可少的一種方法。
三字符序列可以出現(xiàn)在任何地方衔统,包括字符串鹿榜、字符序列、注釋和預(yù)處理指令锦爵。
下面列出了最常用的三字符序列:
三字符組替換
??= ? #
??/ ? ?\
??' ? ?^
??( ? ?[
??) ? ?]
??! ? ?|
??< ? {
??> ? }
??- ? ~
如果希望在源程序中有兩個(gè)連續(xù)的問(wèn)號(hào)舱殿,且不希望被預(yù)處理器替換,這種情況出現(xiàn)在字符常量险掀、字符串字面值或者是程序注釋中沪袭,可選辦法是用字符串的自動(dòng)連接:"...?""?..."或者轉(zhuǎn)義序列:"...?\?..."。
從Microsoft Visual C++ 2010版開(kāi)始樟氢,該編譯器默認(rèn)不再自動(dòng)替換三字符組冈绊。如果需要使用三字符組替換(如為了兼容古老的軟件代碼),需要設(shè)置編譯器命令行選項(xiàng)/Zc:trigraphs
g++仍默認(rèn)支持三字符組埠啃,但會(huì)給出編譯警告死宣。
int age;
在這里,int 和 age 之間必須至少有一個(gè)空格字符(通常是一個(gè)空白符)霸妹,這樣編譯器才能夠區(qū)分它們十电。
現(xiàn)在大家買(mǎi)的C++教材可能會(huì)經(jīng)常看到頭文件是如下:
#include
然后用現(xiàn)在較新的軟件則會(huì)提示:無(wú)法打開(kāi)源文件"iostream.h"。
這是因?yàn)楝F(xiàn)在新的軟件都是采用標(biāo)準(zhǔn) C 格式鹃骂,而 iostream.h 是 VC6.0 使用的風(fēng)格台盯,也就是標(biāo)準(zhǔn) C 格式還未出臺(tái)之前的風(fēng)格。
出現(xiàn)上述提示只需要進(jìn)行如下修改:
#include <iostream>
using namespace std;
C++中的注釋等同與objective-C 和 Swift?
C++數(shù)據(jù)類(lèi)型
使用編程語(yǔ)言進(jìn)行編程時(shí)畏线,需要用到各種變量來(lái)存儲(chǔ)各種信息静盅。變量保留的是它所存儲(chǔ)的值的內(nèi)存位置。這意味著寝殴,當(dāng)您創(chuàng)建一個(gè)變量時(shí)蒿叠,就會(huì)在內(nèi)存中保留一些空間。
您可能需要存儲(chǔ)各種數(shù)據(jù)類(lèi)型(比如字符型蚣常、寬字符型市咽、整型、浮點(diǎn)型抵蚊、雙浮點(diǎn)型施绎、布爾型等)的信息,操作系統(tǒng)會(huì)根據(jù)變量的數(shù)據(jù)類(lèi)型贞绳,來(lái)分配內(nèi)存和決定在保留內(nèi)存中存儲(chǔ)什么谷醉。
基本的內(nèi)置類(lèi)型
C++ 為程序員提供了種類(lèi)豐富的內(nèi)置數(shù)據(jù)類(lèi)型和用戶自定義的數(shù)據(jù)類(lèi)型。下表列出了七種基本的 C++ 數(shù)據(jù)類(lèi)型:
類(lèi)型關(guān)鍵字
布爾型 ? ? ? bool
字符型 ? ? ? char
整型 ? ? ? ? ? int
浮點(diǎn)型 ? ? ? float
雙浮點(diǎn)型 ? double
無(wú)類(lèi)型 ? ? ? void
寬字符型 ? wchar_t
一些基本類(lèi)型可以使用一個(gè)或多個(gè)類(lèi)型修飾符進(jìn)行修飾:
signed
unsigned
short
long
下面實(shí)例會(huì)輸出您電腦上各種數(shù)據(jù)類(lèi)型的大小冈闭。
實(shí)例
#include <iostream>
using namespace std;
int main(){
? cont ?<< ?"size of Char : " << sizeof(Char) ?<< endl;
? cont? <<? "size of Char : " << sizeOf(int)? << endl;
? cont? <<? "size of Char : " << sizeOf(short int)? << endl;
? cont? <<? "size of Char : " << sizeOf(long int)? << endl;
? cont? <<? "size of Char : " << sizeOf(float)? << endl;
? cont? <<? "size of Char : " << sizeOf(double)? << endl;
? cont? <<? "size of Char : " << sizeOf(wchar_t)? << endl;
? return 0
}
本實(shí)例使用了endl俱尼,這將在每一行后插入一個(gè)換行符,<< 運(yùn)算符用于向屏幕傳多個(gè)值萎攒。我們也使用sizeof()函數(shù)來(lái)獲取各種數(shù)據(jù)類(lèi)型的大小遇八。
當(dāng)上面的代碼被編譯和執(zhí)行時(shí),它會(huì)產(chǎn)生以下的結(jié)果耍休,結(jié)果會(huì)根據(jù)所使用的計(jì)算機(jī)而有所不同:
Sizeofchar:1
Sizeofint:4
Sizeofshortint:2
Sizeoflongint:8
Sizeoffloat:4
'Sizeofdouble:8
Sizeofwchar_t:4
typedef 聲明
您可以使用typedef為一個(gè)已有的類(lèi)型取一個(gè)新的名字押蚤。下面是使用 typedef 定義一個(gè)新類(lèi)型的語(yǔ)法:
typedef type newname;
例如,下面的語(yǔ)句會(huì)告訴編譯器羹应,feet 是 int 的另一個(gè)名稱:
typedef int feet;
現(xiàn)在揽碘,下面的聲明是完全合法的,它創(chuàng)建了一個(gè)整型變量 distance:
feet distance;
枚舉類(lèi)型:
枚舉類(lèi)型是一種派生的數(shù)據(jù)類(lèi)型园匹,她是用戶定義的若干枚舉常量的集合雳刺;
如果一個(gè)變量有幾種可能的值,可以定義為枚舉類(lèi)型裸违,所謂"枚舉"是指將變量的值一一列舉出來(lái)掖桦,變量的值只能在列舉出來(lái)的值的范圍內(nèi)。
創(chuàng)建枚舉供汛,需要使用關(guān)鍵字enum枪汪。枚舉類(lèi)型的一般形式為:
enum枚舉名{
標(biāo)識(shí)符[=整型常數(shù)],
標(biāo)識(shí)符[=整型常數(shù)],
...
標(biāo)識(shí)符[=整型常數(shù)]
}枚舉變量;
如果枚舉沒(méi)有初始化, 即省掉"=整型常數(shù)"時(shí), 則從第一個(gè)標(biāo)識(shí)符開(kāi)始涌穆。
例如,下面的代碼定義了一個(gè)顏色枚舉雀久,變量 c 的類(lèi)型為 color宿稀。最后,c 被賦值為 "blue"赖捌。
enumcolor
{red,green,blue}c;
c=blue;
默認(rèn)情況下祝沸,第一個(gè)名稱的值為 0,第二個(gè)名稱的值為 1越庇,第三個(gè)名稱的值為 2罩锐,以此類(lèi)推。但是卤唉,您也可以給名稱賦予一個(gè)特殊的值涩惑,只需要添加一個(gè)初始值即可。例如桑驱,在下面的枚舉中境氢,green的值為 5。
enumcolor{red,green=5,blue};
在這里碰纬,blue的值為 6,因?yàn)槟J(rèn)情況下问芬,每個(gè)名稱都會(huì)比它前面一個(gè)名稱大 1悦析,但 red 的值依然為 0。
//