學(xué)堂在線00740043X_2015_T2 C++語言程序設(shè)計(jì)基礎(chǔ)

負(fù)數(shù)補(bǔ)碼 = 反碼 + 1
正數(shù)補(bǔ)碼 = 原碼

基本數(shù)據(jù)類型:
(整數(shù);實(shí)數(shù)桶现;字符;布爾)類型
(signed/unsigned) signed char
<= (unsigned) short int
<= (unsigned) int
<= (unsigned) long int
<= long long int

整數(shù)常量:

  • 十進(jìn)制
  • 八進(jìn)制
  • 十六進(jìn)制
    后綴:L / LL / U
    浮點(diǎn)常量默認(rèn)為double型傲霸,如果后綴F(或f)可以使其成為float

初始化:

int a = 0
int a(0)
int a = {0}
int a{0}

其中使用大括號的初始化方式稱為列表初始化,列表初始化時不允許信息的丟失互站。例如使用double值初始化int變量,就會造成數(shù)據(jù)的丟失僵缺。

逗號運(yùn)算符:
表達(dá)式1胡桃,表達(dá)式2
求解順序及結(jié)果:
先求解表達(dá)式1,再求解表達(dá)式2
最終結(jié)果為表達(dá)式2的值
例:
a = 3 * 5, a * 4最終結(jié)果為60

條件運(yùn)算:
表達(dá)式1磕潮?表達(dá)式2:表達(dá)式3
條件表達(dá)式的最終類型為2和3中較高的類型

sizeof運(yùn)算符:
sizeof(類型名) 或 sizeof 表達(dá)式

位運(yùn)算符:

  • 按位與(&):只有當(dāng)對應(yīng)位都為1翠胰,則新值中相應(yīng)位為1,否則為0
  • 按位或(|):如果對應(yīng)位至少有一個為1自脯,則新值中相應(yīng)位為1之景,否則為0
  • 按位異或(^): 若對應(yīng)位相同,則結(jié)果該位為0膏潮;若對應(yīng)位不同锻狗,則結(jié)果該位為1
  • 按位取反(~):單目運(yùn)算符,對一個二進(jìn)制位按位取反

位運(yùn)算:

  • 左移運(yùn)算(<<)
    左移后焕参,低位補(bǔ)0轻纪,高位舍棄
  • 右移運(yùn)算(>>)
    右移后:
    低位:舍棄
    高位
    • 無符號數(shù):補(bǔ)0
    • 有符號數(shù):補(bǔ)“符號位”

隱含轉(zhuǎn)換就時把低類型數(shù)據(jù)轉(zhuǎn)換為高類型數(shù)據(jù)

顯式轉(zhuǎn)換:
類型說明符(表達(dá)式)
(類型說明符)表達(dá)式
類型轉(zhuǎn)換操作符<類型說明符>(表達(dá)式)
類型轉(zhuǎn)換操作符:const_cast、dynamic_cast龟糕、reinterpret_cast桐磁、static_cast
例:int(z),(int)z,static_cast<int>(z)三種完全等價

其他控制語句

  • break語句:
    使程序從循環(huán)體和switch語句內(nèi)跳出悔耘,繼續(xù)執(zhí)行邏輯上的嚇一條語句讲岁。不宜用在別處。
  • continue語句:
    結(jié)束本次循環(huán)衬以,接著判斷是否執(zhí)行下一次循環(huán)
  • goto語句:
    使程序的執(zhí)行流程跳轉(zhuǎn)到居于標(biāo)號所指定的語句缓艳。不提倡使用。

類型別名:為已有類型另外命名

  • typedef 已有類型名 新類型名表
typedef double Area,Volume;
typedef int Natural;
Natural i1,i2;
Area a;
Volume v;
  • using 新類型名 = 已有類型名
using Area = double
using Volume = double

不限定作用域枚舉類型說明:

  • 枚舉元素使常量看峻,不能對它們賦值
    enum Weekday {SUN, MON, TUE, WED, THU, FRI, SAT}
    不能寫賦值表達(dá)式:SUN = 0
  • 枚舉元素具有默認(rèn)值阶淘,它們依次為:0,1,2,......
  • 也可以在聲明時另行指定枚舉元素的值
    如:enum Weekday{SUN=7,MON=1,TUE,WED,THYU,FRI,SAT}
  • 枚舉值可以進(jìn)行關(guān)系運(yùn)算
  • 整數(shù)值不能直接賦給枚舉變量
    如需要將整數(shù)賦值給枚舉變量,應(yīng)進(jìn)行強(qiáng)制類型轉(zhuǎn)換
  • 枚舉值可以賦給整型變量

auto類型與decltype類型

  • auto:編譯器通過初始值自動推斷變量的類型
    例如:auto val = val1 + val2
  • decltype:定義一個變量與某一表達(dá)式類型相同互妓,但并不用該表達(dá)式初始化變量
    例如:decltype(i)j = 2
    表示j以2作為初始值溪窒,類型與i一致

struct結(jié)構(gòu)的作用是把一組相互關(guān)聯(lián)的數(shù)據(jù)整合在一起

函數(shù)定義的語法形式:
類型標(biāo)識符 函數(shù)名(形式參數(shù)表)
{
語句序列
}
函數(shù)原型:類型標(biāo)識符 被調(diào)用函數(shù)名(含類型說明的形參表)
遞歸調(diào)用:函數(shù)直接或間接調(diào)用自身
回文:各位數(shù)字左右對稱的整數(shù)

rand函數(shù):
函數(shù)原型:int rand(void);
所需頭文件:<cstdlib>
功能和返回值:求出并返回一個偽隨機(jī)數(shù)

srand函數(shù):
原型:void srand(unsigned int seed)
參數(shù):seed產(chǎn)生隨機(jī)數(shù)的種子
所需頭文件:<cstdlib>
功能:為使rand()產(chǎn)生一序列偽隨機(jī)數(shù)而設(shè)置起始點(diǎn)。使用1作為seed參數(shù)可以重新初化rand()

用遞歸法計(jì)算從n個人中選k個人組成一個委員會的不同組合數(shù)
分析

  • 由n個人里選k個人的組合數(shù)=由n-1個人里選k個人的組合數(shù)+由n-1個人里選k-1個人的組合數(shù)
  • 當(dāng)n=k或k=0時組合數(shù)為1

將n個盤子從A針移到C針可以分解為三個步驟:

  • 將A上的n-1個盤子移到B針上(借助C針);
  • 把A針上剩下的一個盤子移到C針上;
  • 把n-1個盤走從B針移到C針上(借助A針)

函數(shù)的參數(shù)傳遞:

  • 在函數(shù)被調(diào)用時才分配形參的存儲單元
  • 實(shí)參可以是常量冯勉、變量或表達(dá)式
  • 實(shí)參類型必須與形參相符
  • 值傳遞是傳遞參數(shù)值,即單向傳遞
  • 引用傳遞可以實(shí)現(xiàn)雙向傳遞
  • 常引用作參數(shù)可以保障實(shí)參數(shù)據(jù)的安全

引用類型:

  • 引用(&)是標(biāo)識符的別名
  • 定義一個引用時,必須同時對它進(jìn)行初始化,使它指向一個已存在的對象
  • 例如:
int i,j;
int &ri = i;//定義int引用ri澈蚌,并初始化為變量i的引用
j = 10;
ri = j;//相當(dāng)于i = j
  • 一旦一個引用被初始化后,就不能改為指向其它對象
  • 引用可以作為形參

內(nèi)聯(lián)函數(shù):
通常的做法是省略原型灼狰,將整個定義(即函數(shù)頭和所有函數(shù)代碼)放在本應(yīng)提供原型的地方

  • 編譯時在調(diào)用處用函數(shù)體進(jìn)行替換
  • 節(jié)省了參數(shù)傳遞
  • 控制轉(zhuǎn)移等開銷
    注意:
  • 內(nèi)聯(lián)函數(shù)體內(nèi)不能有循環(huán)語句和switch語句;
  • 內(nèi)聯(lián)函數(shù)的定義必須出現(xiàn)在內(nèi)聯(lián)函數(shù)第一次被調(diào)用之前;
  • 對內(nèi)聯(lián)函數(shù)不能進(jìn)行異常接口聲明宛瞄。

默認(rèn)參數(shù)值:

  • 可以預(yù)先設(shè)置默認(rèn)的參數(shù)值,調(diào)用時如給出實(shí)參交胚,則采用實(shí)參值份汗,否則采用預(yù)先設(shè)置的默認(rèn)參數(shù)值盈电。
  • 例:
int add(int x = 5,int y = 6) {
     return x + y;
}
int main() {
     add(10,20);  //10+20
     add(10);     //10+6
     add();       //5+6
}

默認(rèn)參數(shù)值的說明次序:

  • 有默認(rèn)參數(shù)的形參必須列在形參列表的最右,即默認(rèn)參數(shù)值的右面不能有無默認(rèn)值的參數(shù);
  • 調(diào)用時實(shí)參與形參的結(jié)合次序是從左向右杯活。
  • 例:
int add(int x,int y = 5,int z = 6);//正確
int add(int x = 1,int y = 5,int z);//錯誤
int add(int x = 1,int y,int z = 6);//錯誤

默認(rèn)參數(shù)值與函數(shù)的調(diào)用位置:

  • 如果一個函數(shù)有原型聲明匆帚,且原型聲明在定義之前,則默認(rèn)參數(shù)值應(yīng)在函數(shù)原型聲明中給出旁钧;如果只有函數(shù)的定義卷扮,或函數(shù)定義之前,則默認(rèn)參數(shù)值可以函數(shù)定義中給出均践。
  • 例:
int add(int x = 5,int y = 6);
//原型聲明在前
int main(){
  add();
}
int add(int x,int y){
//此處不能再指定默認(rèn)值
  return x + y;
}
int add(int x = 5, int y = 6){
//只有定義晤锹,沒有原型聲明
  return x + y;
}
int main(){
  add();
}

函數(shù)重載的概念:

  • C++允許功能相近的函數(shù)在相同的作用域內(nèi)以相同函數(shù)名聲明,從而形成重載彤委。方便使用鞭铆,便于記憶。

注意事項(xiàng):

  • 重載函數(shù)的形參必須不同:個數(shù)不同或類型不同焦影。
  • 編譯程序?qū)⒏鶕?jù)實(shí)參和形參的類型及個數(shù)的最佳匹配來選擇調(diào)用哪一個函數(shù)车遂。
  • 不要將不同功能的函數(shù)聲明為重載函數(shù),以免出現(xiàn)調(diào)用結(jié)果的誤解 斯辰、混淆

角度值轉(zhuǎn)化為弧度 :
弧度 = 角度值*PI / 180

類與對象

  • 對象: 現(xiàn)實(shí)中對象的模擬舶担,具有屬性和行為
  • 同一類對象的共同屬性和行為。
  • 定義對象時彬呻,通過構(gòu)造函數(shù)初始化
  • 刪除對象時衣陶,通過析構(gòu)函數(shù)釋放資源

面向?qū)ο蟪绦蛟O(shè)計(jì)的基本特點(diǎn):抽象、封裝闸氮、繼承剪况、多態(tài)
類定義的語法形式

class 類名稱
{
  public:
            公有成員(外部接口)
  private:
             私有成員
  protected:
              保護(hù)型成員
};

構(gòu)造函數(shù)的作用

  • 在對象好被創(chuàng)建時使用特定的值構(gòu)造對象,將對象初始化為一個特定的初始狀態(tài)

構(gòu)造函數(shù)的調(diào)用時機(jī)

  • 在對象創(chuàng)建時被自動調(diào)用

類內(nèi)初始值
private:
int hour = 0,minute = 0,second = 0;

私有類型成員

  • 如果緊跟在類名稱的后面聲明私有成員蒲跨,則關(guān)鍵字private可以省略

類的成員函數(shù)

  • 在類中聲明函數(shù)原型译断;
  • 可以在類外給出函數(shù)體實(shí)現(xiàn),并在函數(shù)名前使用類名加以限定或悲;
  • 也可以直接在類中給出函數(shù)體孙咪,形成內(nèi)聯(lián)成員函數(shù);
  • 允許聲明重載函數(shù)和帶默認(rèn)參數(shù)值的函數(shù)

內(nèi)聯(lián)成員函數(shù)

  • 內(nèi)聯(lián)函數(shù)體中不要有復(fù)雜結(jié)構(gòu)
    (如循環(huán)語句和switch語句)巡语。
  • 在類中聲明內(nèi)聯(lián)成員函數(shù)的方式:
  • 將函數(shù)體放在類的聲明中
  • 在類外實(shí)現(xiàn)函數(shù)的時候使用inline關(guān)鍵字

默認(rèn)構(gòu)造函數(shù)

  • 調(diào)用時可以不需要實(shí)參的構(gòu)造函數(shù)
  • 參數(shù)表為空的構(gòu)造函數(shù)
  • 全部參數(shù)都有默認(rèn)值的構(gòu)造函數(shù)
    下面兩個都是默認(rèn)構(gòu)造函數(shù)翎蹈,如在類中同時出現(xiàn),將產(chǎn)生編譯錯誤:
Clock();
Clock(int newH=0,int newM=0,int newS=0);

隱含生成的構(gòu)造函數(shù)
如果程序中未定義構(gòu)造函數(shù)捌臊,編譯器將自動生成一個默認(rèn)構(gòu)造函數(shù)

  • 參數(shù)列表為空杨蛋,不為數(shù)據(jù)成員設(shè)置初始值;
  • 如果類內(nèi)定義了成員的初始值,則使用內(nèi)類定義的初始值逞力;
  • 如果沒有定義類內(nèi)的初始值曙寡,則以默認(rèn)方式初始化;
  • 基本類型的數(shù)據(jù)默認(rèn)初始化的值是不確定的寇荧。

"=defalut"

  • 如果程序中已定義構(gòu)造函數(shù)举庶,默認(rèn)情況下編譯器就不再隱含生成默認(rèn)構(gòu)造函數(shù)。如果此時依然希望編譯器隱含生成默認(rèn)構(gòu)造函數(shù)揩抡,可以使用“=default”户侥。
  • 例:
class Clock{
public:
Clock() = default;//指示編譯器提供默認(rèn)構(gòu)造函數(shù)
Clock(int newH, int newM, int newS); //構(gòu)造函數(shù)
private:
int hour,minute,second;
}

數(shù)組:數(shù)組是一種數(shù)據(jù)形式,能夠存儲多個同類型的值峦嗤。
數(shù)組的初始化規(guī)則:只有定義數(shù)組時才能使用初始化蕊唐,此后就不能使用了,也不能將一個數(shù)組付給另一個數(shù)組:

int cards[4] = {3, 6, 8, 10}; //okay
int hand[4]; //okay
hand[4] = {5, 6, 7, 9}; //not allowed
hand = cards; //not allowed

然而烁设,可以用下標(biāo)分別給數(shù)組中的元素賦值替梨。

常量表達(dá)式是指值不會改變并且在編譯過程就能得到計(jì)算結(jié)果的表達(dá)式。顯然装黑,字面值屬于常量表達(dá)式副瀑,用常量表達(dá)式初始化的const對象也是常量表達(dá)式。
一個對象(或表達(dá)式)是不是常量表達(dá)式由它的數(shù)據(jù)類型和初始值共同決定
C++11新標(biāo)準(zhǔn)規(guī)定恋谭,允許將變量聲明為constexpr類型以便由編譯器來驗(yàn)證變量的值是否是一個常量表達(dá)式糠睡。聲明為constexpr的變量一定是一個常量,而且必須用常量表達(dá)式初始化

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末疚颊,一起剝皮案震驚了整個濱河市狈孔,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌串稀,老刑警劉巖除抛,帶你破解...
    沈念sama閱讀 218,386評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異母截,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)橄教,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,142評論 3 394
  • 文/潘曉璐 我一進(jìn)店門清寇,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人护蝶,你說我怎么就攤上這事华烟。” “怎么了持灰?”我有些...
    開封第一講書人閱讀 164,704評論 0 353
  • 文/不壞的土叔 我叫張陵盔夜,是天一觀的道長。 經(jīng)常有香客問我,道長喂链,這世上最難降的妖魔是什么返十? 我笑而不...
    開封第一講書人閱讀 58,702評論 1 294
  • 正文 為了忘掉前任,我火速辦了婚禮椭微,結(jié)果婚禮上洞坑,老公的妹妹穿的比我還像新娘。我一直安慰自己蝇率,他們只是感情好迟杂,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,716評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著本慕,像睡著了一般排拷。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上锅尘,一...
    開封第一講書人閱讀 51,573評論 1 305
  • 那天攻泼,我揣著相機(jī)與錄音,去河邊找鬼鉴象。 笑死忙菠,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的纺弊。 我是一名探鬼主播牛欢,決...
    沈念sama閱讀 40,314評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼淆游!你這毒婦竟也來了傍睹?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,230評論 0 276
  • 序言:老撾萬榮一對情侶失蹤犹菱,失蹤者是張志新(化名)和其女友劉穎拾稳,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體腊脱,經(jīng)...
    沈念sama閱讀 45,680評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡访得,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,873評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了陕凹。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片悍抑。...
    茶點(diǎn)故事閱讀 39,991評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖杜耙,靈堂內(nèi)的尸體忽然破棺而出搜骡,到底是詐尸還是另有隱情,我是刑警寧澤佑女,帶...
    沈念sama閱讀 35,706評論 5 346
  • 正文 年R本政府宣布记靡,位于F島的核電站谈竿,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏摸吠。R本人自食惡果不足惜空凸,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,329評論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望蜕便。 院中可真熱鬧劫恒,春花似錦、人聲如沸轿腺。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,910評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽族壳。三九已至憔辫,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間仿荆,已是汗流浹背贰您。 一陣腳步聲響...
    開封第一講書人閱讀 33,038評論 1 270
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留拢操,地道東北人锦亦。 一個月前我還...
    沈念sama閱讀 48,158評論 3 370
  • 正文 我出身青樓,卻偏偏與公主長得像令境,于是被迫代替她去往敵國和親杠园。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,941評論 2 355

推薦閱讀更多精彩內(nèi)容