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

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

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

【C++初階】C++入門——C++介紹、命名空間、輸入輸出,C++,c++,開發(fā)語言

一、C++前言介紹

1.1 什么是C++?

?C語言是結(jié)構(gòu)化模塊化的語言,適合處理較小規(guī)模的程序。對于復(fù)雜的問題,規(guī)模較大的程序,需要高度的抽象和建模時(shí),C語言則不合適。為了解決軟件危機(jī),20世紀(jì)80年代,計(jì)算機(jī)界提出了OOP(object oriented programming:面向?qū)ο?/strong>)思想,支持面向?qū)ο蟮某绦蛟O(shè)計(jì)語言應(yīng)運(yùn)而生。1982年,Bjarne Stroustrup博士在C語言的基礎(chǔ)上引入并擴(kuò)充了面向?qū)ο蟮母拍?,發(fā)明了一種新的程序語言。為了表達(dá)該語言與C語言的淵源關(guān)系,命名為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。
?語言的發(fā)展就像是練功打怪升級一樣,也是逐步遞進(jìn),由淺入深的過程。我們先來看下C++的歷史版本。
【C++初階】C++入門——C++介紹、命名空間、輸入輸出,C++,c++,開發(fā)語言
?C++還在不斷的向后發(fā)展。但是:現(xiàn)在社會(huì)上主流使用還是C++98C++11,所有重點(diǎn)要把C++98和C++11掌握好,隨著對C++理解不斷加深,有時(shí)間可以去琢磨下更新的特性。

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

?C++一共有63個(gè)關(guān)鍵字,如下所示:
【C++初階】C++入門——C++介紹、命名空間、輸入輸出,C++,c++,開發(fā)語言

三、命名空間

3.1 為什么要有命名空間?

?大型程序一般會(huì)使用多個(gè)獨(dú)立開發(fā)的庫,這些庫又可能定義大量的全局變量的名字,如類、函數(shù)和模板等。當(dāng)程序用到多個(gè)供應(yīng)商提供的庫時(shí),不可避免地會(huì)發(fā)生某些名字相互沖突地情況。多個(gè)庫將名字放置在全局命名空間中將引發(fā)命名空間污染(namespace pollution)。
?為了解決上面的問題,于是提出了命名空間的概念,命名空間分割了全局命名空間,其中每一個(gè)命名空間是一個(gè)作用域是一種空間概念,常見的域有:局部域、全局域、類域、命名空間域,域會(huì)影響訪問生命周期。

3.2 命名空間定義

?一個(gè)命名空間的定義包含兩部分:首先是關(guān)鍵字namespace,隨后是命名空間的名字。在命名空間名字后面是一系列由花括號括起來的聲明和定義。只要是能出現(xiàn)在全局作用域中的聲明就能置于命名空間內(nèi),主要包括:類、變量(及其初始化操作)、函數(shù)(及其定義)、模板和其他命名空間(這意味著命名空間可以嵌套):

namespace wcy//命名空間的名字
{
	//定義變量
	int rand = 10;
	//定義函數(shù)
	int Add(int left, int right)
	{
		return left + right;
	}
	//定義類型
	struct Node
	{
		struct Node* next;
		int val;
	};
	//嵌套命名空間
	namespace N2
	{
		int c;
		int d;
		int Sub(int left, int right)
		{
			return left - right;
		}
	}
}

?上面的代碼定義了一個(gè)名為wcy的命名空間,該命名空間包含有變量、函數(shù)、類型、命名空間。和其他名字一樣,命名空間的名字也必須在定義它的作用域內(nèi)保持唯一,如果在同一個(gè)作用域中出現(xiàn)多個(gè)相同名字的命名空間,編譯器最后會(huì)把他們合并,這意味著命名空間可以是不連續(xù)的。命名空間既可以定義在全局作用域內(nèi),也可以定義在其他命名空間中,但是不能定義在函數(shù)或類的內(nèi)部。
小tips:
?命名空間作用域后面無須跟分號。

3.3 每一個(gè)命名空間都是一個(gè)作用域

?和其他作用域類似,命名空間中的每個(gè)名字都必須表示該命名空間內(nèi)的唯一實(shí)體。因?yàn)椴煌臻g的作用域不同,所以在不同命名空間內(nèi)可以有相同名字的成員。
?定義在某個(gè)命名空間中的名字可以被該命名空間內(nèi)的其他成員直接訪問,也可以被這些成員內(nèi)嵌作用域中的任何單位訪問。位于該命名空間之外的代碼則必須通過域作用限定符::明確指出所用的名字屬于哪個(gè)命名空間。

namespace wcy
{
	int a = 10;
}

int a = 30;

int main()
{
	int a = 20;
	printf("%d\n", a);
	printf("%d\n", ::a);
	printf("%d\n", wcy::a);
	return 0;
}

【C++初階】C++入門——C++介紹、命名空間、輸入輸出,C++,c++,開發(fā)語言
?上面的代碼在局部域、全局域、wcy命名空間域中分別定義了一個(gè)a變量并且賦了不同的值,在沒指定作用域的時(shí)候,會(huì)根據(jù)局部優(yōu)先的原則去訪問局部變量;::a的左邊什么也沒有意味著去全局域中查找;wcy::a則指定了要到wcy這個(gè)域里面去查找。

3.4 命名空間的使用方法

命名空間有以下三種使用方法:

  • 加命名空間名稱以及作用域限定符
int main()
{
    printf("%d\n", wcy::a);
    return 0;    
}
  • 使用using將命名空間中某個(gè)成員引入
using wcy::b;
int main()
{
    printf("%d\n", wcy::a);
    printf("%d\n", b);
    return 0;    
}
  • 使用using namespace 命名空間名稱 引入

?可以用using namespace wcy將命名空間展開,把命名空間中的成員提升到包含命名空間本身和using指示最近的作用域。

namespace wcy
{
	int a = 10;
	int b = 5;
	int c = 100;
}

int a = 30;

using namespace wcy;

int main()
{
	printf("%d\n", a);//a不明確,出現(xiàn)二義性
	printf("%d\n", ::a);//正確:訪問全局的a
	printf("%d\n", wcy::a);//正確:訪問wcy中的a
	printf("%d\n", b);//正確,去訪問wcy中的b
	int c = 89;//當(dāng)前局部變量的c隱藏了wcy::c
	c++;//當(dāng)前局部的c設(shè)置成90
	return 0;
}

?以上面的代碼為例,通過usingwcy命名空間展開,這個(gè)過程相當(dāng)于把wcy中的名字“添加”到全局作用域中,這使得程序可以直接訪問wcy中的所有名字。
?當(dāng)命名空間被注入到它的外層作用域之后,很可能該命名空間中定義的名字會(huì)與其外層作用域中的成員沖突。例如在主函數(shù)中,wcy的成員a就與全局作用域中的a產(chǎn)生了沖突。這種沖突是允許存在的,但是要想使用沖突的名字,我們就必須明確指出名字的版本main函數(shù)中所有未加限定的a都會(huì)產(chǎn)生二義性錯(cuò)誤。
?為了使用像a這樣的名字,我們必須使用作用域運(yùn)算符來明確指出所需的版本。我們使用::a來表示全局作用域中的a,而使用wcy::a來表示定義在wcy中的a。
?因?yàn)閙ain的作用域和命名空間的作用域不同,所以main內(nèi)部的聲明可以隱藏命名空間中的某些成員的名字。例如,局部變量c隱藏了命名空間的成員wcy::c。在main中使用c不存在二義性,他指的就是局部變量c。

3.5 嵌套的命名空間

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

namespace wcy
{
	int a = 10;
	namespace wcy1
	{
		int a = 900;//將外層作用域的a隱藏了
		int d = 1000;
	}
	//int b = d;//不正確:d是未聲明的標(biāo)識(shí)符
	int b = wcy1::d;//正確訪問的是wcy1里面的d

	namespace wcy2
	{
		int f = wcy1::d;//正確
	}
}

int main()
{
	printf("%d\n", wcy::wcy2::f);
	printf("%d\n", wcy::wcy1::a);
	printf("%d\n", wcy::a);
	return 0;
}

3.6 C++標(biāo)準(zhǔn)庫的命名空間

?std是C++標(biāo)準(zhǔn)庫的命名空間,C++將標(biāo)準(zhǔn)庫的定義實(shí)現(xiàn)都放到這個(gè)命名空間中。
std命名空間的使用慣例:

  • 在日常練習(xí)中,建議直接用using namespace std即可,這樣很方便。
  • 在項(xiàng)目開發(fā)中由于代碼較多、規(guī)模大,就很容易出現(xiàn)沖突問題,所以建議指定命名空間去訪問或者使用using把常用的名字引入。

四、C++輸入和輸出

#include<iostream>
// std是C++標(biāo)準(zhǔn)庫的命名空間名,C++將標(biāo)準(zhǔn)庫的定義實(shí)現(xiàn)都放到這個(gè)命名空間中
using namespace std;
int main()
{
	cout << "Hello C++" << endl;
	return 0;
}

代碼說明:

  • 使用cout標(biāo)準(zhǔn)輸出對象(控制臺(tái))cin標(biāo)準(zhǔn)輸入對象(鍵盤)時(shí),必須包含頭文件以及按命名空間使用方法使用std。
  • cout和cin是全局的流對象,endl是特殊的C++符號,表示換行輸出,它們都包含在頭文件中。
  • <<是流插入運(yùn)算符,>>是流提取運(yùn)算符。
  • 使用C++的輸入輸出更加方便,不需要像printf和scanf輸入輸出那樣,需要手動(dòng)控制格式。C++的輸入輸出可以自動(dòng)識(shí)別變量類型(本質(zhì)上是運(yùn)算符重載),但cout和cin的效率比較低。
  • 實(shí)際上cout和cin分別是ostream和istream類型的對象,>>和<<也涉及運(yùn)算符重載等知識(shí),這些我將在后面逐一分享給大家。

注意:
?早期標(biāo)準(zhǔn)庫將所有功能在全局域中實(shí)現(xiàn),聲明在.h后綴的頭文件中,使用時(shí)只需要包含了對應(yīng)的頭文件即可,后來將其實(shí)現(xiàn)在std命名空間下,為了和C的頭文件區(qū)分,也為了正確使用命名空間,規(guī)定C++的頭文件不帶.h。有一些舊編譯器中還支持<iostream.h>格式,現(xiàn)在一些新的編譯器已不再支持,因此推薦使用<iostream>配合std的方式。


?今天的分享到這里就結(jié)束啦!如果覺得文章還不錯(cuò)的話,可以三連支持一下,您的支持就是春人前進(jìn)的動(dòng)力!
【C++初階】C++入門——C++介紹、命名空間、輸入輸出,C++,c++,開發(fā)語言文章來源地址http://www.zghlxwxcb.cn/news/detail-516667.html

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

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲(chǔ)空間服務(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語言是 結(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月16日
    瀏覽(31)
  • C++入門(1):命名空間,IO流 輸入輸出,缺省參數(shù)

    一、命名空間 1.1 命名空間的作用: ? 避免標(biāo)識(shí)符命名沖突 1.2 命名空間定義: :namespace PS: 命名空間可以嵌套. 在同一工程中,編譯器會(huì)把 相同名稱 的命名空間 合并 成到同一個(gè)命名空間中。 1.3 命名空間的使用 一個(gè)命名空間相當(dāng)于定義了一個(gè)作用域,其中的所有內(nèi)

    2024年02月07日
    瀏覽(29)
  • 【C++學(xué)習(xí)】C++入門 | C++該怎么學(xué) | 命名空間 | 輸入輸出

    【C++學(xué)習(xí)】C++入門 | C++該怎么學(xué) | 命名空間 | 輸入輸出

    歡迎來到C++的世界,這是一門令人興奮的語言。 好吧,每當(dāng)我開始閱讀C++的書籍的時(shí)候,開頭的第一句話必定是這個(gè), 也不知道其他語言的編程書籍是不是這樣,那就讓這句話也作為我C++分享之路上的第一句話吧。 目錄 寫在前面 1. C++怎么學(xué)? 1. C語言 2. Object-Oriented C++ 3.

    2024年02月10日
    瀏覽(32)
  • 【C++起飛之路】初級——命名空間、輸入輸出流

    【C++起飛之路】初級——命名空間、輸入輸出流

    為了解決合作開發(fā)時(shí)的命名沖突問題,C++ 引入了命名空間(Namespace) 當(dāng)我們編寫代碼時(shí),可能會(huì)產(chǎn)生一些命名沖突,為了解決這一沖突引出了命名空間的概念 命名沖突的產(chǎn)生主要包括兩個(gè)方面原因: 1、與庫函數(shù)名沖突 2、工程中的沖突(比如多人共同完成一個(gè)項(xiàng)目時(shí),寫了

    2024年02月03日
    瀏覽(22)
  • 【C++】關(guān)鍵字 & 命名空間 & 輸入輸出 & 缺省函數(shù)

    【C++】關(guān)鍵字 & 命名空間 & 輸入輸出 & 缺省函數(shù)

    C++? 總計(jì) 63 個(gè), C語言 32 個(gè) 直接上圖:? 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 ext

    2024年02月08日
    瀏覽(26)
  • 【C++】:C++關(guān)鍵字,命名空間,輸入&輸出,缺省參數(shù)

    【C++】:C++關(guān)鍵字,命名空間,輸入&輸出,缺省參數(shù)

    C++總計(jì)63個(gè) ,C語言32個(gè)。 ps:下面我們只是看一下C++有多少,不對進(jìn)行具體的講解。在以后的學(xué)習(xí)中會(huì)會(huì)了解的更深。 在C語言的語法中,有時(shí)候會(huì)遇到這樣的情況: 我們的本意是創(chuàng)建一個(gè)全局的 rand 變量,再進(jìn)行輸出。那為什么會(huì)報(bào)錯(cuò)呢? 原因:

    2024年04月27日
    瀏覽(31)
  • 計(jì)算機(jī)語言 之【C++】入門級知識(shí)講解(命名空間,C++輸入輸出,缺省參數(shù),函數(shù)重載,引用,內(nèi)斂函數(shù),auto關(guān)鍵字,for循環(huán),指針空值nullptr)

    計(jì)算機(jī)語言 之【C++】入門級知識(shí)講解(命名空間,C++輸入輸出,缺省參數(shù),函數(shù)重載,引用,內(nèi)斂函數(shù),auto關(guān)鍵字,for循環(huán),指針空值nullptr)

    三點(diǎn)睡六點(diǎn)起,閻王夸我好身體 不到三點(diǎn)我不睡,太平間里搶C位 目錄: 前言: 本片博客是以學(xué)習(xí)過C語言之后進(jìn)入C++學(xué)習(xí)為前提,講解C++入門級知識(shí),為C++之后的學(xué)習(xí)做鋪墊 –?–?–?–?–?–?–?–?–?–?–?–?–?–?–?-正文開始-?–?–?–?–?

    2024年04月11日
    瀏覽(35)
  • 【是C++,不是C艸】 第一個(gè)C++程序 | 命名空間 | 輸入輸出

    【是C++,不是C艸】 第一個(gè)C++程序 | 命名空間 | 輸入輸出

    ????? 歡迎來到 Claffic 的博客 ? ???? ? ?? 專欄: 《是C++,不是C艸》?? 前言: ? 在認(rèn)識(shí)了C++的來歷之后,我們就要開始正式學(xué)習(xí)C++了,系好安全帶,準(zhǔn)備出發(fā)! 注: 你最好是學(xué)完了C語言,并學(xué)過一些初階的數(shù)據(jù)結(jié)構(gòu)。 從創(chuàng)建項(xiàng)目開始,添加項(xiàng)的時(shí)候終于 不用刪pp 了

    2024年02月04日
    瀏覽(28)
  • 【C++那些事兒】初識(shí)C++ 命名空間,C++中的輸入輸出以及缺省函數(shù)

    【C++那些事兒】初識(shí)C++ 命名空間,C++中的輸入輸出以及缺省函數(shù)

    君兮_的個(gè)人主頁 即使走的再遠(yuǎn),也勿忘啟程時(shí)的初心 C/C++ 游戲開發(fā) Hello,米娜桑們,這里是君兮_,數(shù)據(jù)結(jié)構(gòu)和算法初階更新完畢,我們繼續(xù)來擴(kuò)充我們的知識(shí)面,今天我們從認(rèn)識(shí)C++開始來帶大家學(xué)習(xí)C++,我之前看過一套書叫做《明朝那些事兒》,把本來枯燥的歷史講的生動(dòng)

    2024年02月08日
    瀏覽(36)
  • C++基礎(chǔ)知識(shí) (命名空間、輸入輸出、函數(shù)的缺省參數(shù)、函數(shù)重載)

    C++基礎(chǔ)知識(shí) (命名空間、輸入輸出、函數(shù)的缺省參數(shù)、函數(shù)重載)

    ?? 例1: #include iostream 標(biāo)準(zhǔn)輸入輸出 std 是 c++ 標(biāo)準(zhǔn)庫的命名空間,將標(biāo)準(zhǔn)庫的定義實(shí)現(xiàn)都放到這個(gè)命名空間中 using namespace std 展開 std 里的內(nèi)容 cout ? c 代表的是 console 控制臺(tái)的意思, out 有輸出的意思 流運(yùn)算符 流插入 endl 等價(jià)于 \\\'n\\\' 在 c++ 中,變量、函數(shù)和類的名稱存在于

    2024年02月15日
    瀏覽(48)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包