欧美free性护士vide0shd,老熟女,一区二区三区,久久久久夜夜夜精品国产,久久久久久综合网天天,欧美成人护士h版

目錄

柚子快報(bào)邀請(qǐng)碼778899分享:【C++】入門基礎(chǔ)知識(shí)-1

柚子快報(bào)邀請(qǐng)碼778899分享:【C++】入門基礎(chǔ)知識(shí)-1

http://yzkb.51969.com/

??個(gè)人主頁(yè):Yanni.—

?數(shù)據(jù)結(jié)構(gòu):Data Structure.??????

?C語言筆記:C Language Notes

?OJ題分享:?Topic Sharing

?C++詳解:C++ in detail

目錄

前言:

C++關(guān)鍵字

命名空間?

命名空間介紹

命名空間的使用

C++的輸入和輸出?

cout 輸出

cin 輸入

std命名空間的使用慣例

缺省參數(shù)

缺省參數(shù)概念

缺省參數(shù)分類

函數(shù)重載

函數(shù)重載概念

為什么c語言不支持重載

前言:

企業(yè)中面試中一般需要面向?qū)ο蟮膬煞N主流語言C++和Java,現(xiàn)在java崗位雖然多,但是內(nèi)卷嚴(yán)重,經(jīng)過很長(zhǎng)時(shí)間的思考,還是選擇了C++,可能以后還會(huì)進(jìn)入游戲開發(fā)的領(lǐng)域,這恰恰是我感興趣的,C++前期的基礎(chǔ)知識(shí)很難,但是過了這道難關(guān)之后情況會(huì)越來越來。Let's go!

C++關(guān)鍵字

C++

總計(jì)

63

個(gè)關(guān)鍵字,

C

語言

32

個(gè)關(guān)鍵字。

這里在C語言的基礎(chǔ)上增加了許多關(guān)鍵字。

命名空間?

命名空間介紹

C/C++

中,變量、函數(shù)和后面要學(xué)到的類都是大量存在的,這些變量、函數(shù)和類的名稱將都存

在于全局作用域中,可能會(huì)導(dǎo)致很多沖突。使用命名空間的目的是

對(duì)標(biāo)識(shí)符的名稱進(jìn)行本地化

,

避免命名沖突或名字污染

namespace

關(guān)鍵字的出現(xiàn)就是針對(duì)這種問題的。

#include

#include

int rand = 10;

int main()

{

printf("%d", rand);

return 0;

}

我們直到rand產(chǎn)生隨機(jī)值,但是我們給出了一個(gè)全局變量rand,并且賦值了給它。這就導(dǎo)致:

?“rand”: 重定義;以前的定義是“函數(shù)”。所以我們得避免命名沖突或名字污染。

命名沖突主要有兩個(gè):

1.庫(kù)沖突

2.項(xiàng)目間,同時(shí)工作交接之間的互相命名沖突

因此定義命名空間,需要使用到namespace關(guān)鍵字,后面跟命名空間的名字,然后接一對(duì){}即可,{} 中即為命名空間的成員。

#include

#include

namespace Yanni

{

int rand = 10;

}

int main()

{

printf("%d", Yanni::rand);

return 0;

}

命名空間的三個(gè)特性:

1.命名空間中可以定義變量/函數(shù)/類型。

2.命名空間可以嵌套。

3.同一個(gè)工程中是允許多種同名稱的命名空間存在,編譯器最后會(huì)成同一個(gè)命名空間內(nèi)。

命名空間的使用

命名空間的使用主要有三種方式

1.加命名空間名稱及作用域限定符

namespace Yanni // 命名空間名

{

int r = 10;

}

int main()

{

printf("%d", Yanni::r);

return 0;

}

2.使用using將命名空間中某個(gè)成員引入

namespace Yanni

{

int r = 10;

}

using Yanni::r;

int main()

{

printf("%d",r);

return 0;

}

這個(gè)操作就想是將命名空間里的特定成員變成全局訪問。?

?3.使用 using namespace 命名空間名稱引入

namespace Yanni

{

int r = 10;

}

using namespace Yanni;

int main()

{

printf("%d",r);

return 0;

}

這就是將命名空間內(nèi)的所有成員變成全局訪問。

C++的輸入和輸出?

cout 輸出

#include

//std是C++標(biāo)準(zhǔn)庫(kù)的命名空間名,C++將標(biāo)準(zhǔn)庫(kù)的定義都放到這個(gè)命名空間中。

using namespace std;

int main()

{

cout << "hello world" << endl;//endl相當(dāng)與換行符

return 0;

}

說明:

1.

使用

cout

標(biāo)準(zhǔn)輸出對(duì)象

(

控制臺(tái)

)

cin

標(biāo)準(zhǔn)輸入對(duì)象

(

鍵盤

)

時(shí),必須

包含

< iostream >

頭文件 以及按命名空間使用方法使用std

2. cout

cin

是全局的流對(duì)象,

endl

是特殊的

C++

符號(hào),表示換行輸出,他們都包含在包含

頭文件中。

3.

<<

是流插入運(yùn)算符,

>>

是流提取運(yùn)算符

4.

使用

C++

輸入輸出更方便,不需要像

printf/scanf

輸入輸出時(shí)那樣,需要手動(dòng)控制格式。 C++的輸入輸出可以自動(dòng)識(shí)別變量類型。

5.

實(shí)際上

cout

cin

分別是

ostream

istream

類型的對(duì)象,

>>

<<

也涉及運(yùn)算符重載等知識(shí), 這些知識(shí)我們我們后續(xù)才會(huì)學(xué)習(xí),所以我們這里只是簡(jiǎn)單學(xué)習(xí)他們的使用。后面我們還有有 一個(gè)章節(jié)更深入的學(xué)習(xí)IO

流用法及原理。

注意:早期標(biāo)準(zhǔn)庫(kù)將所有功能在全局域中實(shí)現(xiàn),聲明在

.h

后綴的頭文件中,使用時(shí)只需包含對(duì)應(yīng)

頭文件即可,后來將其實(shí)現(xiàn)在

std

命名空間下,為了和

C

頭文件區(qū)分,也為了正確使用命名空間,

規(guī)定

C++

頭文件不帶

.h

;舊編譯器

(vc 6.0)

中還支持

格式,后續(xù)編譯器已不支持,因

推薦

使用

+std

的方式。

cin 輸入

在c語言中,我們定義變量都需要對(duì)變量進(jìn)行初始化,而在C++中,就不需要初始化了,因?yàn)閏in>>可以自動(dòng)識(shí)別變量類型。

#include

//std是C++標(biāo)準(zhǔn)庫(kù)的命名空間名,C++將標(biāo)準(zhǔn)庫(kù)的定義都放到這個(gè)命名空間中。

using namespace std;

int main()

{

int a;

double b;

char c;

cin >> a;

cin >> b >> c;

cout << a << b << c << endl;

return 0;

}

std命名空間的使用慣例

std

C++

標(biāo)準(zhǔn)庫(kù)的命名空間,如何展開

std

使用更合理呢?

1.

在日常練習(xí)中,建議直接

using namespace std

即可,這樣就很方便。

2. using namespace std

展開,標(biāo)準(zhǔn)庫(kù)就全部暴露出來了,如果我們定義跟庫(kù)重名的類型

/

對(duì) 象/

函數(shù),就存在沖突問題。該問題在日常練習(xí)中很少出現(xiàn),但是項(xiàng)目開發(fā)中代碼較多、規(guī)模 大,就很容易出現(xiàn)。所以建議在項(xiàng)目開發(fā)中使用,像std::cout

這樣使用時(shí)指定命名空間

+ using std::cout展開常用的庫(kù)對(duì)象

/

類型等方式。

缺省參數(shù)

缺省參數(shù)概念

缺省參數(shù)是

聲明或定義函數(shù)時(shí)

為函數(shù)的

參數(shù)指定一個(gè)缺省值

。在調(diào)用該函數(shù)時(shí),如果沒有指定實(shí)

參則采用該形參的缺省值,否則使用指定的實(shí)參。

using namespace std;

void Func(int a = 0)

{

cout << a << endl;

}

int main()

{

Func();沒有傳參時(shí),使用參數(shù)的默認(rèn)值

Func(10);傳參時(shí),使用限定的實(shí)參

}

缺省參數(shù)分類

全缺省參數(shù)

void Func(int a = 0,int b = 10,int c = 20)

{

cout << a << endl;

cout << b << endl;

cout << c << endl;

}

半缺省參數(shù)

void Func(int a, int b = 10, int c = 20)

{

cout << a << endl;

cout << b << endl;

cout << c << endl;

}

這里要注意的是:

1.半缺省參數(shù)必須從右往左依次來給出,不能間隔著給(傳參的順序的從左到右)

2.缺省參數(shù)不能再函數(shù)聲明和定義中同時(shí)出現(xiàn)

3.缺省值必須是常量或者全局變量

4.c語言編譯器不支持

函數(shù)重載

自然語言中,一個(gè)詞可以有多重含義,人們可以通過上下文來判斷該詞真實(shí)的含義,即該詞被重

載了。

比如:以前有一個(gè)笑話,國(guó)有兩個(gè)體育項(xiàng)目大家根本不用看,也不用擔(dān)心。一個(gè)是乒乓球,一個(gè)

是男足。前者是

誰也贏不了!

,后者是

誰也贏不了“。

函數(shù)重載概念

函數(shù)重載:

是函數(shù)的一種特殊情況,

C++

允許在

同一作用域中

聲明幾個(gè)功能類似

的同名函數(shù)

,這

些同名函數(shù)的

形參列表

(

參數(shù)個(gè)數(shù) 或 類型 或 類型順序

)

不同

,常用來處理實(shí)現(xiàn)功能類似數(shù)據(jù)類型

不同的問題。

1.參數(shù)類型不同

int Add(int left, int right)

{

cout << "int Add(int left, int right)" << endl;

return left + right;

}

double Add(double left, double right)

{

cout << "double Add(double left, double right)" << endl;

return left + right;

}

2.參數(shù)個(gè)數(shù)不同

void Func()

{

cout << "void Func()" << endl;

}

void Func(int a)

{

cout << "void Func(int a)" << endl;

}

3.參數(shù)類型順序不同

void F(int a, char b)

{

cout << "void F(int a, char b)" << endl;

}

void F(char b, int a)

{

cout << "void F(char b, int a)" << endl;

}

為什么c語言不支持重載

C/C++

中,一個(gè)程序要運(yùn)行起來,需要經(jīng)歷以下幾個(gè)階段:

預(yù)處理、編譯、匯編、鏈接。

1.

實(shí)際項(xiàng)目通常是由多個(gè)頭文件和多個(gè)源文件構(gòu)成,而通過

C

語言階段學(xué)習(xí)的編譯鏈接,我們

可以知道,【當(dāng)前

a.cpp

中調(diào)用了

b.cpp

中定義的

Add

函數(shù)時(shí)】,編譯后鏈接前,

a.o

的目標(biāo)

文件中沒有

Add

的函數(shù)地址,因?yàn)?/p>

Add

是在

b.cpp

中定義的,所以

Add

的地址在

b.o

中。那么

怎么辦呢?

2.

所以鏈接階段就是專門處理這種問題,

鏈接器看到

a.o

調(diào)用

Add

,但是沒有

Add

的地址,就

會(huì)到

b.o

的符號(hào)表中找

Add

的地址,然后鏈接到一起

(

老師要帶同學(xué)們回顧一下

)

3.

那么鏈接時(shí),面對(duì)

Add

函數(shù),鏈接接器會(huì)使用哪個(gè)名字去找呢?這里每個(gè)編譯器都有自己的

函數(shù)名修飾規(guī)則。

4.

由于

Windows

vs

的修飾規(guī)則過于復(fù)雜,而

Linux

g++

的修飾規(guī)則簡(jiǎn)單易懂,下面我們使

用了

g++

演示了這個(gè)修飾后的名字。

5.

通過下面我們可以看出

gcc

的函數(shù)修飾后名字不變。而

g++

的函數(shù)修飾后變成【

_Z+

函數(shù)長(zhǎng)度

+

函數(shù)名

+

類型首字母】。

?結(jié)論:在Linux下,采用g++編譯完成后,函數(shù)名字的修飾發(fā)生改變,編譯器將函數(shù)參數(shù)類型信息添加到修改的名字中。

好啦,這就是今天學(xué)習(xí)的分享啦!看到希望大家的三連呀!

如果有不當(dāng)之處,歡迎大佬指正!

柚子快報(bào)邀請(qǐng)碼778899分享:【C++】入門基礎(chǔ)知識(shí)-1

http://yzkb.51969.com/

好文推薦

評(píng)論可見,查看隱藏內(nèi)容

本文內(nèi)容根據(jù)網(wǎng)絡(luò)資料整理,出于傳遞更多信息之目的,不代表金鑰匙跨境贊同其觀點(diǎn)和立場(chǎng)。

轉(zhuǎn)載請(qǐng)注明,如有侵權(quán),聯(lián)系刪除。

本文鏈接:http://gantiao.com.cn/post/19542566.html

發(fā)布評(píng)論

您暫未設(shè)置收款碼

請(qǐng)?jiān)谥黝}配置——文章設(shè)置里上傳

掃描二維碼手機(jī)訪問

文章目錄