国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【C++初階】C++入門(1)

這篇具有很好參考價(jià)值的文章主要介紹了【C++初階】C++入門(1)。希望對大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

【C++初階】C++入門(1),C++,c++,開發(fā)語言
??博客主頁 小羊失眠啦.
??系列專欄《C語言》 《數(shù)據(jù)結(jié)構(gòu)》 《Linux》《Cpolar》
??感謝大家點(diǎn)贊??收藏?評論??


【C++初階】C++入門(1),C++,c++,開發(fā)語言

一、C++的認(rèn)識

1.1 什么是C++

C語言是結(jié)構(gòu)化和模塊化的語言,適合處理較小規(guī)模的程序。對于復(fù)雜的問題,規(guī)模較大的程序,需要高度的抽象和建模時(shí),C語言則不合適。為了解決軟件危機(jī), 20世紀(jì)80年代, 計(jì)算機(jī)界提出了OOP(object oriented programming:面向?qū)ο?/code>)思想,支持面向?qū)ο蟮某绦蛟O(shè)計(jì)語言應(yīng)運(yùn)而生。 1982年,Bjarne Stroustrup博士在C語言的基礎(chǔ)上引入并擴(kuò)充了面向?qū)ο蟮母拍睿l(fā)明了一 種新的程序語言。命名為C++。因此:C++是基于C語言而產(chǎn)生的,它既可以進(jìn)行C語言的過程化程序設(shè)計(jì),又可以進(jìn)行以抽象數(shù)據(jù)類型為特點(diǎn)的基于對象的程序設(shè)計(jì),還可以進(jìn)行面向?qū)ο蟮某绦蛟O(shè)計(jì)

1.2 C++的發(fā)展

1979年,貝爾實(shí)驗(yàn)室的本賈尼等人試圖分析 unix 內(nèi)核的時(shí)候,試圖將內(nèi)核模塊化,于是在C 語言的基礎(chǔ)上進(jìn)行擴(kuò)展,增加了類的機(jī)制,完成了一個(gè)可以運(yùn)行的預(yù)處理程序,稱之為C with classes。

C++的歷史版本:

階段 內(nèi)容
C with classes 類及派生類、公有和私有成員、類的構(gòu)造和析構(gòu)、友元、內(nèi)聯(lián)函數(shù)、賦值運(yùn)算符
重載等
C++ 1.0 添加虛函數(shù)概念,函數(shù)和運(yùn)算符重載,引用、常量等
C++ 2.0 更加完善支持面向?qū)ο螅略霰Wo(hù)成員、多重繼承、對象的初始化、抽象類、靜
態(tài)成員以及const成員函數(shù)
C++ 3.0 進(jìn)一步完善,引入模板,解決多重繼承產(chǎn)生的二義性問題和相應(yīng)構(gòu)造和析構(gòu)的處
C++98 C++標(biāo)準(zhǔn)第一個(gè)版本,絕大多數(shù)編譯器都支持,得到了國際標(biāo)準(zhǔn)化組織(ISO)和美
國標(biāo)準(zhǔn)化協(xié)會認(rèn)可,以模板方式重寫C++標(biāo)準(zhǔn)庫,引入了STL(標(biāo)準(zhǔn)模板庫)
C++03 C++標(biāo)準(zhǔn)第二個(gè)版本,語言特性無大改變,主要:修訂錯(cuò)誤、減少多異性
C++05 C++標(biāo)準(zhǔn)委員會發(fā)布了一份計(jì)數(shù)報(bào)告(Technical Report,TR1),正式更名
C++0x,即:計(jì)劃在本世紀(jì)第一個(gè)10年的某個(gè)時(shí)間發(fā)布
C++11 增加了許多特性,使得C++更像一種新語言,比如:正則表達(dá)式、基于范圍for循
環(huán)、auto關(guān)鍵字、新容器、列表初始化、標(biāo)準(zhǔn)線程庫等
C++14 對C++11的擴(kuò)展,主要是修復(fù)C++11中漏洞以及改進(jìn),比如:泛型的lambda表
達(dá)式,auto的返回值類型推導(dǎo),二進(jìn)制字面常量等
C++17 在C++11上做了一些小幅改進(jìn),增加了19個(gè)新特性,比如:static_assert()的文
本信息可選,F(xiàn)old表達(dá)式用于可變的模板,if和switch語句中的初始化器等
C++20 自C++11以來最大的發(fā)行版,引入了許多新的特性,比如:**模塊(Modules)、協(xié)程(Coroutines)、范圍(Ranges)、概念(Constraints)**等重大特性,還有對已有
特性的更新:比如Lambda支持模板、范圍for支持初始化等
C++23 制定ing

二、C++關(guān)鍵字

C++一共有63個(gè)關(guān)鍵字,其中有32個(gè)是C語言中的關(guān)鍵字

asm do if return try continue
auto double inline short typedef for
bool dynamic_cast int signed typeid public
break else long sizeof typename throw
case enum mutable static union wchar_t
catch explicit namespace static_cast unsigned default
char export new struct using friend
class extern operator switch virtual register
const false private template void true
const_cast float protected this volatile while
delete goto reinterpret_cast

三、命名空間

3.1 為什么有命名空間

在C/C++中,變量、函數(shù)和后面要學(xué)到的類都是大量存在的,這些變量、函數(shù)和類的名稱將都存在于全局作用域中,可能會導(dǎo)致很多沖突。使用命名空間的目的是對標(biāo)識符的名稱進(jìn)行本地化, 以避免命名沖突或名字污染。

例如:

#include<stdio.h>
#include<stdlib.h>

int rand = 10;

int main()
{
	printf("%d", rand);
	return 0;
}

【C++初階】C++入門(1),C++,c++,開發(fā)語言

在這段程序中,不引用頭文件#include <stdlib.h>是可以正常運(yùn)行的,但引用后程序就會報(bào)錯(cuò),這是什么原因呢?因?yàn)?rand<stdlib.h> 中已有了定義,這里報(bào)了重定義的錯(cuò)誤。

命名空間分割了全局命名空間,其中每一個(gè)命名空間是一個(gè)作用域。域是一種空間概念,常見的域有:局部域、全局域、類域、命名空間域,域會影響訪問和生命周期。

3.2 命名空間的定義

命名空間的定義由兩部分構(gòu)成:首先是關(guān)鍵字namespace,后面跟命名空間的名字,然后接一對花括號,花括號中即為命名空間的成員。 命名空間中可以定義變量、函數(shù)、類型和其他命名空間。

namespace N1//命名空間的名字
{
	//定義變量
	int rand = 10;

	//定義函數(shù)
	int Add(int left, int right)
	{
		return left + right;
	}

	//定義類型
	struct Node
	{
		struct Node* next;
		int val;
	};

	//嵌套命名空間
	namespace N2
	{
		int Sub(int left, int right)
		{
			return left - right;
		}
	}
}

注意:

  • 一個(gè)命名空間就定義了一個(gè)新的作用域,命名空間中的所有內(nèi)容都局限于該命名空間中
  • 用一個(gè)工程中允許出現(xiàn)多個(gè)相同名稱的命名空間,編譯器最后會將它們合并為一個(gè)命名空間

3.3 命名空間使用

命名空間的使用三種方式:

  • 加命名空間名稱及域作用限定符
namespace N
{
	int a = 10;
	int b = 5;
}

int main()
{
	printf("%d\n", N::a);
	return 0;
}
  • 使用using將命名空間中某個(gè)成員引入
using N::b;
int main()
{
	printf("%d\n", N::a);
	printf("%d\n", b);
	return 0;
}
  • 使用using namespace命名空間名稱引入(展開命名空間)
namespace N
{
	int a = 10;
	int b = 5;
}

int a = 20;

using namespace N;

int main()
{
	printf("%d\n", a);      //a不明確,有二義性
	printf("%d\n", ::a);    //訪問全局的a
	printf("%d\n", N::a);   //訪問N中的a
	printf("%d\n", b);
	return 0;
}

N中的成員a 就與全局作用域中的a 產(chǎn)生了沖突。這種沖突是允許存在的,但是**要想使用沖突的名字,我們就必須明確指出名字的版本。**main函數(shù)中所有未加限定的a都會產(chǎn)生二義性錯(cuò)誤。

這時(shí)我們必須使用**域作用限定符(:??**來明確指出所需的版本

  • : :a來表示全局作用域中的a
  • N: :a來表示定義在N中的a

注意:

如果命名空間沒有展開,編譯器默認(rèn)是不會搜索命名空間中的變量,去訪問變量是訪問不到的。

訪問的優(yōu)先級:局部域 > 全局域

3.4 命名空間的嵌套

嵌套的命名空間同時(shí)是一個(gè)嵌套的作用域,它嵌套在外層命名空間的作用域中。嵌套的命名空間中的名字遵循的規(guī)則與往常類似:內(nèi)層命名空間聲明的名字將隱藏外層命名空間聲明的同名成員。在嵌套的命名空間中定義的名字只在內(nèi)層命名空間中有效,外層命名空間的代碼想要訪問它必須在名字前添加限定符。

namespace N
{
	int a = 10;

	namespace N1
	{
		int a = 20;
		int b = 15;
	}

	namespace N2
	{
		int c = N1::b;
	}
}

int main()
{
	printf("%d\n", N::N2::c);
	printf("%d\n", N::N1::a);
	printf("%d\n", N::a);
	return 0;
}

3.5 std命名空間的使用

std是C++標(biāo)準(zhǔn)庫的命名空間,如何展開std使用更合理呢?

  1. 在日常練習(xí)中,建議直接using namespace std;即可,這樣就很方便。
  2. using namespace std;展開,標(biāo)準(zhǔn)庫就全部暴露出來了,如果我們定義跟庫重名的類型、對象、函數(shù),就存在沖突問題。該問題在日常練習(xí)中很少出現(xiàn),但是項(xiàng)目開發(fā)中代碼較多、規(guī)模 大,就很容易出現(xiàn)。所以建議在項(xiàng)目開發(fā)中使用,像std::cout這樣使用時(shí)指定命名空間例如:using std::cout展開常用的庫對象、類型等方式。

四、C++輸入和輸出

#include<iostream>
using namespace std;

int main()
{
	int a = 0;
	double b = 0;
	cin >> a >> b;//流提取運(yùn)算法
	cout << a << " " << b << endl;//流插入運(yùn)算法 endl相當(dāng)于換行
	cout << a << " " << b << '\n';
	return 0;
}

我們在項(xiàng)目中要經(jīng)常使用 coutendl,每次指定命名空間很不方便,直接展開會全部暴露,有沖突風(fēng)險(xiǎn),我們可以指定展開來解決問題。

using std::cout;
using std::endl;

說明

  • 使用**cout標(biāo)準(zhǔn)輸出對象(控制臺)和cin標(biāo)準(zhǔn)輸入對象(鍵盤)**時(shí),必須包含< iostream >頭文件以及按命名空間使用方法使用std。
  • coutcin 是全局的流對象,endl 是特殊的C++符號,表示換行輸出,他們都包含在包含 < iostream >頭文件中。
  • <<是流插入運(yùn)算符,>>是流提取運(yùn)算符。
  • 使用C++輸入輸出更方便,不需要像 printf和scanf 輸入輸出時(shí)那樣,需要手動控制格式。 C++的輸入輸出可以自動識別變量類型。

五、缺省參數(shù)

5.1 缺省參數(shù)的定義

缺省參數(shù)是聲明或定義函數(shù)時(shí)為函數(shù)的參數(shù)指定一個(gè)缺省值。在調(diào)用該函數(shù)時(shí),如果沒有指定實(shí)參則采用該形參的缺省值,否則使用指定的實(shí)參。

#include<iostream>
using namespace std;

void Test(int a = 0)
{
	cout << a << endl;
}

int main()
{
	Test();//沒有傳參時(shí),使用參數(shù)的默認(rèn)值a=0
	Test(1);//傳參時(shí),使用指定的實(shí)參a=1
}

5.2 缺省參數(shù)分類

  • 全缺省參數(shù)(全默認(rèn)參數(shù))–所有參數(shù)都給了缺省值
void Test(int a = 10, int b = 20, int c = 30)
{
	cout << "a = " << a ;
	cout << " b = " << b ;
	cout << " c = " << c << endl;
}

int main()
{
	Test(1, 2, 3);
	Test(1, 2);
	Test(1);
	Test();
	return 0;
}

【C++初階】C++入門(1),C++,c++,開發(fā)語言

全缺省參數(shù)在傳參時(shí),參數(shù)是按照從左往右的順序進(jìn)行缺省的,不能跳著缺省,例如:Func(1, ,3) ,讓第一個(gè)形參和第三個(gè)形參都使用傳遞值,而讓第二個(gè)參數(shù)使用缺省值,這種做法是不被允許的。

  • 半缺省參數(shù) – 部分的參數(shù)給了缺省值
void Test(int a , int b = 20, int c = 30)
{
	cout << "a = " << a ;
	cout << " b = " << b ;
	cout << " c = " << c << endl;
}

int main()
{
	Test(1, 2, 3);
	Test(1, 2);
	Test(1);
	return 0;
}

注意:

  • 缺省參數(shù)不能在函數(shù)聲明和定義中同時(shí)出現(xiàn)(最好在聲明給;聲明給,定義給也不可以)
  • 缺省值必須是常量或者全局變量。
  • 半缺省參數(shù)必須從左到右依次來給出,不能間隔著給
  • C語言不支持

【C++初階】C++入門(1),C++,c++,開發(fā)語言文章來源地址http://www.zghlxwxcb.cn/news/detail-817817.html

到了這里,關(guān)于【C++初階】C++入門(1)的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • C++初階之C++入門最全詳解

    C++初階之C++入門最全詳解

    C++總計(jì)63個(gè),C語言32個(gè) 在C/C++中,變量、函數(shù)和后面要學(xué)到的類都是大量存在的,這些變量、函數(shù)和類的名稱將都存 在于全局作用域中,可能會導(dǎo)致很多沖突。使用命名空間的目的是對標(biāo)識符的名稱進(jìn)行本地化, 以避免命名沖突或名字污染,namespace的出現(xiàn)

    2024年02月16日
    瀏覽(28)
  • 【初階C++】入門(超詳解)

    【初階C++】入門(超詳解)

    C++是在C的基礎(chǔ)之上,容納進(jìn)去了面向?qū)ο缶幊趟枷?,并增加了許多有用的庫,以及編程范式等。熟悉C語言之后,對C++學(xué)習(xí)有一定的幫助,本章節(jié)主要目標(biāo): 補(bǔ)充C語言語法的不足,以及C++是如何對C語言設(shè)計(jì)不合理的地方進(jìn)行優(yōu)化的,比如:作用域方面、IO方面、函數(shù)方面、指

    2024年02月04日
    瀏覽(49)
  • C++初階--C++入門

    C++初階--C++入門

    從本章開始,我們就要正式的進(jìn)入到C++的學(xué)習(xí)了。C++是在C的基礎(chǔ)之上,容納進(jìn)去了 面向?qū)ο缶幊?思想,并增加了許多有用的庫,以及編程范式等,同時(shí) 對C語言某些設(shè)計(jì)不合理的地方進(jìn)行優(yōu)化,如在作用域,IO,函數(shù),指針以及宏方面 。下面我們先從一些較容易理解的知識

    2024年02月15日
    瀏覽(14)
  • C++初階 入門(2)

    C++初階 入門(2)

    目錄 一、缺省函數(shù) 1.1什么是缺省函數(shù) 1.2為什么要有缺省函數(shù) 1.3使用缺省函數(shù) 1.4測試代碼 二、函數(shù)重載 2.1什么是函數(shù)重載? 2.2為什么要有函數(shù)重載 2.3什么情況構(gòu)成函數(shù)重載 2.4函數(shù)重載例子及代碼 ?三、引用 3.1什么是引用 3.2如何引用 ?3.3常引用(可略過) 3.4引用和指針的對

    2024年02月08日
    瀏覽(17)
  • C++初階 入門

    C++初階 入門

    ? 目錄 1.用C++的方式寫一個(gè)Hello World 2.命名空間 2.1什么是命名空間? 2.2使用命名空間 3.C++的輸入輸出? 前言:C++初階系列,每一期博主都會使用簡單樸素的語言將對應(yīng)的知識分享給大家,爭取讓所有人都可以聽懂,C++初階系列會持續(xù)更新,上學(xué)期間將不定時(shí)更新,但總會更的

    2024年02月07日
    瀏覽(15)
  • 【C++初階】C++入門——缺省參數(shù)、函數(shù)重載

    【C++初階】C++入門——缺省參數(shù)、函數(shù)重載

    ?缺省參數(shù)是 聲明或定義函數(shù)時(shí)為函數(shù)的參數(shù)指定一個(gè)缺省值 。在調(diào)用該函數(shù)時(shí),如果沒有指定實(shí)參則采用該形參的缺省值,否則使用指定的實(shí)參。 ?上面代碼在 fun 函數(shù)的形參部分給了缺省值10,這意味著在調(diào)用 fun 函數(shù)的時(shí)候可以傳參,也可以不傳參,如果傳參了那形參

    2024年02月11日
    瀏覽(18)
  • 【C++初階】---C++入門篇

    【C++初階】---C++入門篇

    ??個(gè)人主頁:@小沈YO. ??小編介紹:歡迎來到我的亂七八糟小星球?? ??專欄:C++ 心愿便利店 ??本章內(nèi)容:命名空間、缺省參數(shù) 記得 評論?? +點(diǎn)贊?? +收藏?? +關(guān)注??哦~ C語言最初由 Dennis Ritchie 于 1969 年到 1973 年在 ATT 貝爾實(shí)驗(yàn)室里開發(fā)出來,主要用于重新實(shí)現(xiàn) Unix 操作

    2024年02月16日
    瀏覽(20)
  • 【C++初階】第一站:C++入門基礎(chǔ)(中)

    【C++初階】第一站:C++入門基礎(chǔ)(中)

    前言: 這篇文章是c++入門基礎(chǔ)的第一站的中篇,涉及的知識點(diǎn) 函數(shù)重載 : 函數(shù)重載的原理--名字修飾 引用:概念、特性、使用場景、常引用、傳值、傳引用效率比較的知識點(diǎn) 目錄 5. 函數(shù)重載 (續(xù)) C++支持函數(shù)重載的原理--名字修飾(name Mangling) 為什么C++支持函數(shù)重載,而C語言

    2024年02月05日
    瀏覽(51)
  • 【C++初階】第一站:C++入門基礎(chǔ)(下)

    【C++初階】第一站:C++入門基礎(chǔ)(下)

    前言:? 緊接著上兩篇文章,c++入門基礎(chǔ)(上):C++入門基礎(chǔ)(上) ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?c++入門基礎(chǔ)(中):C++入門基礎(chǔ)(中) ????????繼續(xù)補(bǔ)充完c++初階入門基礎(chǔ)的知識點(diǎn),本章知識點(diǎn)包括: ????????引用和指針的區(qū)別、內(nèi)聯(lián)函數(shù)、auto(C++11)、基于范圍

    2024年02月04日
    瀏覽(53)
  • 【C++初階】C++入門——C++介紹、命名空間、輸入輸出

    【C++初階】C++入門——C++介紹、命名空間、輸入輸出

    ?C語言是 結(jié)構(gòu)化 和 模塊化 的語言,適合處理 較小規(guī)模 的程序。對于復(fù)雜的問題,規(guī)模較大的程序,需要高度的抽象和建模時(shí),C語言則不合適。為了解決軟件危機(jī),20世紀(jì)80年代,計(jì)算機(jī)界提出了 OOP (object oriented programming: 面向?qū)ο?)思想,支持面向?qū)ο蟮某绦蛟O(shè)計(jì)語言應(yīng)

    2024年02月11日
    瀏覽(16)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包