中文亚洲精品无码_熟女乱子伦免费_人人超碰人人爱国产_亚洲熟妇女综合网

當(dāng)前位置: 首頁(yè) > news >正文

做網(wǎng)站必須要購(gòu)買(mǎi)空間嗎谷歌瀏覽器 免費(fèi)下載

做網(wǎng)站必須要購(gòu)買(mǎi)空間嗎,谷歌瀏覽器 免費(fèi)下載,網(wǎng)站優(yōu)化要怎么做,網(wǎng)站描述怎么寫(xiě)比較好在這篇博客中,我將會(huì)介紹從C語(yǔ)言過(guò)渡到C的一些基礎(chǔ)知識(shí)。 目錄 C起源 C的關(guān)鍵字 輸出hello,world ?編輯 命名空間 1.什么是命名空間 2.namespace的作用 3.域作用限定符 4.命名空間的使用 IO流 缺省參數(shù) 函數(shù)重載 引用 1.引用的定義 2.引…

在這篇博客中,我將會(huì)介紹從C語(yǔ)言過(guò)渡到C++的一些基礎(chǔ)知識(shí)。

目錄

C++起源

C++的關(guān)鍵字

輸出hello,world

?編輯

命名空間

1.什么是命名空間

2.namespace的作用

3.域作用限定符

4.命名空間的使用

IO流

缺省參數(shù)

函數(shù)重載

引用

1.引用的定義

2.引用的特性

3.引用的使用

4.const引用

5.引用和指針

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

nullptr


C++起源

1979年本賈尼·斯特勞斯特盧普在貝爾實(shí)驗(yàn)室中進(jìn)行復(fù)雜的軟件開(kāi)發(fā)時(shí),他感受到了C語(yǔ)言的局限性,于是他在此基礎(chǔ)上設(shè)計(jì)了C++。

C++在C語(yǔ)言的基礎(chǔ)上添加了面向?qū)ο缶幊痰奶匦?封裝、繼承、多態(tài)。

隨后幾年,C++不斷完善發(fā)展,在1998年推出了C++98,官方第一個(gè)較為完善的版本,引入了STL(標(biāo)準(zhǔn)模板庫(kù))。

2011年,C++的一次革命性的更新,增加了大量特性和功能

2020年,C++又一次巨大更新,引入了模板(Modules)、概念(Concepts)、協(xié)程(Coroutines)

在公司中,使用的比較多的都是C++98和C++11.

C++的關(guān)鍵字

輸出hello,world

#include<iostream>
using namespace std;int main()
{cout << "hello,world!" << endl;return 0;
}


命名空間

1.什么是命名空間

命名空間需要用一個(gè)關(guān)鍵字namespace后跟命名空間的名字,然后用{}括起來(lái),在里面可以定義變量、函數(shù)、自定義類(lèi)型,即為命名空間的成員


2.namespace的作用

在C/C++中,變量、函數(shù)、類(lèi)是大量存在的,這些名稱(chēng)在全局域中可能會(huì)重復(fù)從而引發(fā)沖突。

#include<stdlib.h>
int rand = 15;int main()
{//這里會(huì)報(bào)編譯錯(cuò)誤,“rand” : 重定義;以前的定義是“函數(shù)”	printf("%d\n", rand);return 0;
}

C++中域有函數(shù)局部域,全局域,命名空間域,類(lèi)域。局部域和全局域除了會(huì)影響編譯查找邏輯,還會(huì)影響變量的生命周期命名空間域類(lèi)域不影響變量生命周期。

namespace會(huì)定義一個(gè)域,也就是命名空間域,它與全局域獨(dú)立,不同的域可以存在同名變量。

我們可以將rand放于一個(gè)命名空間域,從而修正上述問(wèn)題。

namespace只能定義在全局,當(dāng)然他還可以嵌套定義

項(xiàng)目工程中多文件中定義同名namespace會(huì)認(rèn)為是?個(gè)同namespace,不會(huì)沖突。


3.域作用限定符

既然有不同的有不同的域,那我們可以通過(guò)域作用限定符::)l來(lái)訪(fǎng)問(wèn)域中的成員變量。

::默認(rèn)訪(fǎng)問(wèn)全局域;在其左側(cè)加上域名就是訪(fǎng)問(wèn)該名字的域,如上面代碼,Moss::rand就時(shí)訪(fǎng)問(wèn)的Moss域中的rand變量。


4.命名空間的使用

namespace的使用主要分為兩種:

1.指定命名空間訪(fǎng)問(wèn),實(shí)際項(xiàng)目中推薦這種。

2.使用關(guān)鍵字using命名空間的某個(gè)成員或者全部成員展開(kāi)

C++標(biāo)準(zhǔn)庫(kù)都放在?個(gè)叫std(standard)的命名空間中。

#include<iostream>
using namespace std;//展開(kāi)std中的所有成員

IO流

IO流其實(shí)就是輸入輸出流,與之相關(guān)的頭文件就是<iostream>。

<iostream>:Input Output Stream,標(biāo)準(zhǔn)輸入輸出流庫(kù),定義了標(biāo)準(zhǔn)輸入輸出對(duì)象。

std標(biāo)準(zhǔn)庫(kù)就被包含在其中。

cout、cin、endl都屬于C++標(biāo)準(zhǔn)庫(kù)(std)

cout:用于屏幕輸出

cin:用于鍵盤(pán)輸入

endl:輸出時(shí),增加換行符('\n')

<<是流插入運(yùn)算符,>>流提取運(yùn)算符。(在C語(yǔ)言是左移/右移運(yùn)算符)。

cout和cin的輸出輸入通過(guò)函數(shù)重載實(shí)現(xiàn)自動(dòng)識(shí)別變量類(lèi)型,無(wú)須像C語(yǔ)言那樣指定格式。

使用格式如下:


缺省參數(shù)

缺省參數(shù)就是在聲明或者定義函數(shù)時(shí)為函數(shù)的實(shí)參指定一個(gè)默認(rèn)值無(wú)參數(shù)調(diào)用函數(shù)時(shí),函數(shù)就會(huì)使用該默認(rèn)值。

需要注意的幾個(gè)點(diǎn):

1.當(dāng)函數(shù)聲明和定義分離時(shí),缺省參數(shù)只能在函數(shù)聲明出現(xiàn),函數(shù)定義不能使用缺省參數(shù)。

2.缺省參數(shù)的指定在函數(shù)的聲明或者定義中,規(guī)定缺省參數(shù)必須從右往左依次指定不能跳躍給缺省參數(shù)。

3.對(duì)于帶缺省參數(shù)的函數(shù)調(diào)用從左往右依次傳實(shí)參不能跳躍傳。

4.全缺省:全部形參給缺省值。

半缺省:部分形參給缺省值。


函數(shù)重載

函數(shù)重載同一作用域中出現(xiàn)同名函數(shù),但是這些函數(shù)的形參各不相同。

函數(shù)重載允許返回值的類(lèi)型相等,但是返回值的類(lèi)型不同 不能作為函數(shù)重載的標(biāo)識(shí)

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

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

3參數(shù)類(lèi)型順序不同

接下來(lái)我們看一個(gè)需要警惕的坑

上面這兩個(gè)函數(shù)構(gòu)成函數(shù)重載,因?yàn)閰?shù)個(gè)數(shù)不同,但是這兩個(gè)函數(shù)存在調(diào)用歧義,調(diào)用F()函數(shù)時(shí),編譯器不知道調(diào)用哪個(gè)函數(shù)。


引用

1.引用的定義

引用:給一個(gè)存在變量取別名引用變量原變量共用一塊內(nèi)存空間。

語(yǔ)法形式:類(lèi)型& 引用的別名 = 引用對(duì)象

這里a、b、c、d都是共用一塊內(nèi)存空間的

2.引用的特性

1.引用的變量必須初始化

2.一個(gè)變量可以多個(gè)引用。

3.引用一旦引用了一個(gè)變量,就不得再引用其他變量。(引用的指向不允許更改

int a = 5;//編譯錯(cuò): ra必須初始化引用
//int& ra;int& b = a;int c = 10;
//這里是賦值,將c的值賦給b(a),不是改變引用的指向
b = c;

3.引用的使用

1.引用傳參

2.做返回值

引用傳參:

引用傳參表面上是傳值,但實(shí)際上傳的是地址,只不過(guò)是編譯器幫做了。

void Swap(int& x, int& y)//引用傳參 可以替換 傳址調(diào)用
{int tmp = x;x = y;y = tmp;
}

4.const引用

當(dāng)引用一個(gè)const對(duì)象時(shí),必須const引用,否則就會(huì)權(quán)限放大,權(quán)限不允許放大,但可以縮小。

const int a = 10;
//權(quán)限不能放大,必須用const引用
//int& ra = a;
const int& ra = a;int b = 5;
//權(quán)限縮小是可以的
const int& rb = b;

臨時(shí)對(duì)象:編譯器在一塊空間暫存表達(dá)式的結(jié)果時(shí)臨時(shí)創(chuàng)建的未命名的對(duì)象

臨時(shí)對(duì)象的引用:臨時(shí)對(duì)象具有常性,也必須用const引用。(不用const引用就會(huì)觸發(fā)權(quán)限放大,然后就報(bào)錯(cuò))

int a = 4;
const int& ra = a * 3;//a * 3的結(jié)果存放在臨時(shí)變量中,得用const引用double d = 3.14;
const int& rd = d;//類(lèi)型轉(zhuǎn)換產(chǎn)生的中間值也存放在臨時(shí)變量中,也得用const引用

5.引用和指針

1.引用必須初始化,不開(kāi)空間指針存儲(chǔ)變量地址,語(yǔ)法上可以不初始化(nullptr),但是要開(kāi)空間

2.引用的指向不能改變,而指針可以隨意更改

3.引用直接訪(fǎng)問(wèn)對(duì)象,指針要解引用。

4.sizeof的結(jié)果不同,引用結(jié)果為類(lèi)型大小,但指針只跟多少位系統(tǒng)有關(guān)(32位4個(gè)字節(jié),64位8個(gè)字節(jié))

5.使用引用相對(duì)安全,指針容易出現(xiàn)空指針和野指針的問(wèn)題。


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

定義:用inline修飾的函數(shù)就是內(nèi)聯(lián)函數(shù)

作用:內(nèi)聯(lián)函數(shù)在調(diào)用的時(shí)候,編譯器會(huì)在調(diào)用的地方展開(kāi)內(nèi)聯(lián)函數(shù),這樣就不需要建立函數(shù)棧幀,以便提高效率。

所以我們通過(guò)作用就很容易想到,內(nèi)聯(lián)函數(shù)設(shè)計(jì)出來(lái)是為了代替C語(yǔ)言的宏函數(shù),而替代的原因是宏函數(shù)的實(shí)現(xiàn)很容易出錯(cuò)。

//正確的宏實(shí)現(xiàn)
#define ADD(x, y) ((x) + (y))
// 為什么不能加分號(hào)?
// 為什么要加外面的括號(hào)?
// 為什么要加里面的括號(hào)?
//保證優(yōu)先級(jí)
int main()
{cout << ADD(1, 2) * 5 << endl;int x = 1, y = 2;ADD(x & y, x | y);// ->(x&y + x|y)//+的優(yōu)先級(jí)比& | 高,所以里面也要加括號(hào)return 0;
}

需要注意的點(diǎn):

1.inline對(duì)于編譯器只是建議,并不是說(shuō)加了一定會(huì)在調(diào)用的地方被展開(kāi),一般來(lái)說(shuō),inline適用于簡(jiǎn)短而又被頻繁調(diào)用的函數(shù),對(duì)于代碼較多的函數(shù),加了inline也會(huì)被編譯器忽略。

2.inline不推薦函數(shù)聲明和定義分離到兩個(gè)文件,如果inline函數(shù)被展開(kāi),鏈接時(shí)就會(huì)報(bào)錯(cuò)。

?vs編譯器在debug版本下默認(rèn)不展開(kāi)inline,以便調(diào)試。


nullptr

在C語(yǔ)言中,空指針NULL實(shí)際上是一個(gè)宏

NULL的使用不可避免存在一定的問(wèn)題,本想調(diào)用指針版本的F(int* ptr),但是NULL被定義成0,從而調(diào)用了F(int x)版本,這有違初衷。

因此在C++中新增關(guān)鍵字nullptr,它可以轉(zhuǎn)換任意類(lèi)型的指針類(lèi)型。

nullptr只能被隱式轉(zhuǎn)換為指針類(lèi)型,不能轉(zhuǎn)換為整數(shù)類(lèi)型,所以nullptr定義空指針可以避免類(lèi)型轉(zhuǎn)換。


拜拜,下期再見(jiàn)😏

摸魚(yú)ing😴?🎞

http://www.risenshineclean.com/news/44258.html

相關(guān)文章:

  • 網(wǎng)頁(yè)編輯軟件中文版seo英文全稱(chēng)
  • 外貿(mào)怎么做網(wǎng)站外鏈seo網(wǎng)站結(jié)構(gòu)優(yōu)化的方法
  • 做調(diào)查賺錢(qián)網(wǎng)站有哪些網(wǎng)站推廣
  • 怎么讓網(wǎng)站能被百度到互聯(lián)網(wǎng)營(yíng)銷(xiāo)師考試
  • 網(wǎng)站建設(shè)經(jīng)驗(yàn)分享google adsense
  • 搜狗新聞源網(wǎng)站怎么做云南seo公司
  • 江寧網(wǎng)站建設(shè)要多少錢(qián)新聞小學(xué)生摘抄
  • wordpress 圖片在哪威海百度seo
  • 如何用魔方網(wǎng)表做門(mén)戶(hù)網(wǎng)站真正免費(fèi)的建站
  • 網(wǎng)站怎么做圖片網(wǎng)絡(luò)營(yíng)銷(xiāo)的特征和功能
  • 吉安網(wǎng)站設(shè)計(jì)杭州百度優(yōu)化
  • 濟(jì)南集團(tuán)網(wǎng)站建設(shè)公司百度快照如何優(yōu)化
  • 制作英文網(wǎng)站費(fèi)用營(yíng)銷(xiāo)策略分析
  • 寺院網(wǎng)站建設(shè)谷歌網(wǎng)站收錄提交入口
  • 大型門(mén)戶(hù)網(wǎng)站開(kāi)發(fā)費(fèi)用發(fā)稿媒體平臺(tái)
  • 網(wǎng)站死鏈怎么刪除seo管理系統(tǒng)
  • 西安南郊網(wǎng)站建設(shè)seo 優(yōu)化技術(shù)難度大嗎
  • 試述網(wǎng)站建設(shè)應(yīng)考慮哪些方面的問(wèn)題競(jìng)價(jià)排名的定義
  • 中小企業(yè)網(wǎng)站建設(shè)中服務(wù)器的解決方案是找客戶(hù)資源的軟件哪個(gè)最靠譜
  • 網(wǎng)絡(luò)建站公司如何做市場(chǎng)網(wǎng)站營(yíng)銷(xiāo)與推廣
  • wordpress獲取當(dāng)前分類(lèi)名稱(chēng)seo軟件資源
  • 網(wǎng)站建設(shè) 2018網(wǎng)站設(shè)計(jì)與制作教程
  • 重慶旅游網(wǎng)站制作公司百度搜索風(fēng)云榜手機(jī)版
  • 淮安哪里有做網(wǎng)站的人網(wǎng)站如何賺錢(qián)
  • 微信網(wǎng)站全稱(chēng)廚師培訓(xùn)機(jī)構(gòu) 廚師短期培訓(xùn)班
  • 網(wǎng)站后臺(tái)英文培訓(xùn)學(xué)校怎么招生
  • 網(wǎng)站的模板演示怎么做內(nèi)容營(yíng)銷(xiāo)是什么意思
  • 廈門(mén)市同安區(qū)建設(shè)局公開(kāi)網(wǎng)站網(wǎng)站優(yōu)化軟件
  • 衡陽(yáng)的房地產(chǎn)網(wǎng)站建設(shè)打開(kāi)百度搜索網(wǎng)站
  • 全國(guó)知名網(wǎng)站建設(shè)市場(chǎng)營(yíng)銷(xiāo)四大基本策略