一些關于C++的基礎知識

引言:C++兼容C的大部分內容,但其中仍有許多小細節的東西需要大家注意

一.C++的第一個程序

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

第一次看這個是否感覺一頭霧水?不要擔心,我們會在后續的學習中了解并熟悉它們的。

二.命名空間

1.namespace的定義

1>命名空間的成員可以是變量,函數,類型等

namespace xw
{int a=0;int* b;
}

2>本質:namespace本質上是一個域,獨立于全局域,不同域里可以定義同名變量等

3>namespace可以定義在全局域中,也可以嵌套定義

4>C++標準庫都放在一個名為std的命名空間中

5>C++中包含局部域,全局域,命名空間域,類域。域會影響在編譯時查找一個變量/函數/類型的出處,其中全局域和局部域還會影響變量的生命周期

2.namespace的價值:對標識符的名稱進行本地化,避免命名沖突或名字污染

3.命名空間的使用

補:::域作用限定符

? ? ? ? 當左邊啥都沒有時默認在全局域中取值,若左邊指定域,則在特定域中取值

1>指定命名空間訪問

2>使用using將命名空間中某個成員展開

3>展開命名空間中全部成員(在項目中不建議,因為沖突風險太大,多用于日常代碼練習)

三.C++的輸入與輸出

1.<iostream>是標準輸入輸出流庫,定義了標準的輸入輸出對象

2.std::cin是istream類的對象,它主要是面向窄字符的標準輸入流

3.std::cout是ostream類的對象,它主要是面向窄字符的標準輸出流

4.std::endl是一個函數,待流輸入輸出時,相當于插入一個換行符并且刷新緩沖區

5在C++中.<<是流插入運算符, >>是流提取運算符

注:在C和C++中有很多相同的符號,但可能用法不一樣,要多加注意

6.C++的輸入輸出可以自動識別變量類型,相比于C更方便

四.缺省參數

1.定義:在聲明或定義函數時為函數的參數指定一個缺省值

2.用法:在調用函數時若沒有給定實參則調用缺省值,否則調用傳入的實參值

3.分類:全缺省,半缺省(規定半缺省參數必須從右往左依次連續缺省,不可間隔跳躍給缺省值)

4.注意事項

1>帶缺省參數的函數調用,C++規定必須從左往右給實參,不能跳躍給實參

2>當函數定義和聲明分離時,不能再函數聲明和定義中同時給缺省值,規定在函數聲明中給缺省值

五.函數重載

C++中將出現在同一作用域同名函數形參不同(可以是形參個數不同,也可以是形參類型不同,或形參的順序不同)的函數稱為函數重載

六.引用

1.引用的概念

1>引用相當于給變量起了個別名,不會為其新開一塊空間,而是與原變量公用一塊空間

2>類型& 引用別名=引用對象

2.引用的特性

1>引用在定義時必須初始化

2>一個變量可以多次引用

3>引用一旦引用一個實體就不可以再引用其他實體(在C++中引用定義后不能改變指向)

3.引用的使用

1>引用在實踐中只要用于引用傳參和引用作為返回值,可以減少拷貝,提高效率和改變引用對象的同時改變被引用對象

2>引用傳參和指針傳參的功能類似,但相對而言引用傳參更方便

4.const引用

1>對于const對象必須使用const引用,對于普通對象也可以使用const引用,因為對象在引用過程中訪問權限只能縮小不能放大

2>對于引用對象是const對象,變量間的運算時必須使用const引用,因為他們都具有常屬性

補:在進行變量間的運算時,編譯器需要一塊空間暫時存儲表達式的求值結果,所以就臨時創建一個未命名的對象即臨時對象,臨時對象具有常屬性

5.指針 vs 引用

引用和指針在實踐中相輔相成,功能有所重疊,但各有特點

引用可看作為一個變量取別名,不新開空間指針是存儲一個變量的地址,需要開辟新空間
引用在定義時必須初始化指針在定義時可以不初始化
引用在定義后不可改變指向指針可以改變指向
引用是直接訪問對象指針是間接訪問對象
引用的類型大小即被引用對象的類型大小指針的大小是地址的大小(4字節/8字節)
引用很少出現空引用問題,比較安全指針易出現野指針,空指針問題

七.inline

1.用inline修飾的函數叫內聯函數,編譯的時候C++編譯器會在調用的地方展開內聯函數,這樣調用函數時就需要建立棧幀,可以提高效率

2.當函數短小且調用頻繁時建議使用inline,除此之外當你使用內聯函數時,編譯器會根據實際情況選擇是否展開內聯函數

3.C++引入內聯函數是為了替代C的宏函數,因為宏函數中的坑太多

4.內聯函數的定義和聲明不能放在兩個文件中,這樣做會導致鏈接錯誤

八.nullptr

1.在C++中NULL代表字面常量0,在C中表示無類型指針(void*)的常量

2.在C++中,nullptr是一種特殊類型的字面量,可以轉換成任意其它類型的指針類型,但不能轉換成整型.

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/42614.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/42614.shtml
英文地址,請注明出處:http://en.pswp.cn/web/42614.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

數據挖掘——matplotlib

matplotlib概述 Mat指的是Matlab&#xff0c;plot指的是畫圖&#xff0c;lib即library&#xff0c;顧名思義&#xff0c;matplotlib是python專門用于開發2D圖表的第三方庫&#xff0c;使用之前需要下載該庫&#xff0c;使用pip命令即可下載。 pip install matplotlib1、matpl…

elasticsearch SQL:在Elasticsearch中啟用和使用SQL功能

?博主首頁 &#xff1a; 「碼到三十五」 &#xff0c;同名公眾號 :「碼到三十五」&#xff0c;wx號 : 「liwu0213」 ?博主專欄 &#xff1a; <mysql高手> <elasticsearch高手> <源碼解讀> <java核心> <面試攻關> ?博主的話 &#xff1a…

服務注冊Eureka

目錄 一、背景 1、概念 2、CAP 理論 3、常見的注冊中心 二、Eureka 三、搭建 Eureka Server 1、搭建注冊中心 四、服務注冊 五、服務發現 六、Eureka 和 Zooper 的區別 一、背景 1、概念 遠程調用就類似于一種通信 例如&#xff1a;當游客與景區之間進行通信&…

代碼隨想錄算法訓練營第六十三天 | prim算法、kruskal算法、復習

53. 尋寶 — prim算法 題目鏈接&#xff1a;https://kamacoder.com/problempage.php?pid1053 文檔講解&#xff1a;https://programmercarl.com/kamacoder/0053.%E5%AF%BB%E5%AE%9D-prim.html 思路 本題是最小生成樹的模板題&#xff0c;最小生成樹可以使用 prim算法&#xf…

bash shell 重定向輸入和輸出

shell 提供的重定向操作符 操作符作用>將命令的輸出發到一個文件中如果文件存在&#xff0c;則新的文件數據會覆蓋已經存在的文件>>將命令的輸出追加到一有文件如果文件不存在&#xff0c;則創建新的文件<將文件內容重定向到命令<<內聯輸入重定向(inline in…

Xubuntu24.04之設置高性能模式兩種方式(二百六十一)

簡介: CSDN博客專家,專注Android/Linux系統,分享多mic語音方案、音視頻、編解碼等技術,與大家一起成長! 優質專欄:Audio工程師進階系列【原創干貨持續更新中……】?? 優質專欄:多媒體系統工程師系列【原創干貨持續更新中……】?? 優質視頻課程:AAOS車載系統+AOSP…

蒼穹外賣--新增員工

代碼開發 package com.sky.controller.admin;import com.sky.constant.JwtClaimsConstant; import com.sky.dto.EmployeeDTO; import com.sky.dto.EmployeeLoginDTO; import com.sky.entity.Employee; import com.sky.properties.JwtProperties; import com.sky.result.Result…

Springboot各個版本維護時間

Springboot各個版本維護時間

MQTT教程--服務器使用EMQX和客戶端使用MQTTX

什么是MQTT MQTT&#xff08;Message Queuing Telemetry Transport&#xff09;是一種輕量級、基于發布-訂閱模式的消息傳輸協議&#xff0c;適用于資源受限的設備和低帶寬、高延遲或不穩定的網絡環境。它在物聯網應用中廣受歡迎&#xff0c;能夠實現傳感器、執行器和其它設備…

【Linux】shell基礎知識點(updating)

1.輸出重定向2.多命令批量執行&#xff08;; 、&&、 ||&#xff09;3.腳本不同方式執行的區別&#xff08;source、bash、sh、./&#xff09;4.理解環境變量5.export6.引號的使用last.命令相關 1.輸出重定向 3種數據流&#xff1a; stdin&#xff1a;標準輸入&#xf…

jmeter持續學習之----性能初級一些概念和指標

服務端為什么要進行性能測試 大量用戶下&#xff0c;系統能否穩定運行&#xff08;比較多&#xff09; 用于硬件服務器的選型 用于軟件技術的選型 性能測試關注的點 用戶角度:響應時間 資源占用:并發用戶數,TPS,資源占用(cpu,內存,JVM) 性能測試策略 基準測試:單用戶測試,對…

去了字節跳動,才知道年薪40W的測試有這么多?

最近脈脈職言區有一條討論火了&#xff1a; 哪家互聯網公司薪資最‘厲害’&#xff1f; 下面的評論多為字節跳動&#xff0c;還炸出了很多年薪40W的測試工程師 我只想問一句&#xff0c;現在的測試都這么有錢了嗎&#xff1f; 前幾天還有朋友說&#xff0c;從騰訊跳槽去了字節&…

8.8.8.8 IP地址的作用

在跟著韋東山老師的學習手冊中看見了關于8.8.8.8 IP用于檢測網絡狀態&#xff0c;然后搜索了關于此IP的相關作用如下&#xff1a; 公共DNS服務&#xff1a;8.8.8.8是Google提供的兩個公共DNS服務器地址之一&#xff08;另一個是8.8.4.4&#xff09;。DNS&#xff08;域名系統&a…

代碼隨想錄訓練營第三十天 452用最少數量的箭引爆氣球 435無重疊區間 763劃分字母區間

第一題&#xff1a; 原題鏈接&#xff1a;452. 用最少數量的箭引爆氣球 - 力扣&#xff08;LeetCode&#xff09; 思路&#xff1a;先根據每個元素的第一個值進行排序&#xff0c;然后從第一個元素開始遍歷&#xff0c;這里要注意我們初始化結果值的時候直接初始化為1&#x…

強化基石,引領未來:完善配套設施與提升服務水平

完善配套設施與提升服務水平對于產業園運營具有重要意義。它們不僅能夠提升園區的硬件環境和整體形象&#xff0c;增強園區的吸引力和競爭力&#xff1b;還能夠優化營商環境&#xff0c;降低企業運營成本&#xff0c;提高運營效率&#xff1b;同時推動園區創新&#xff0c;形成…

基于Java技術的網吧管理系統

你好呀&#xff0c;我是計算機學姐碼農小野&#xff01;如果有相關需求&#xff0c;可以私信聯系我。 開發語言&#xff1a;Java 數據庫&#xff1a;MySQL 技術&#xff1a;Java技術&#xff0c;B/S結構 工具&#xff1a;MyEclipse&#xff0c;MySQL 系統展示 首頁 個人中…

PDF轉Markdown的開源工具解析

Marker&#xff1a;PDF轉Markdown的開源工具解析 Marker是一個由VikParuchuri在GitHub上開發的開源項目&#xff0c;其核心功能是將PDF文件轉換為Markdown格式。以下是對Marker項目的詳細解析&#xff1a; 項目概述&#xff1a; 項目鏈接&#xff1a;https://github.com/VikP…

【技術追蹤】DiffuMatting:使用摳圖級別注釋合成任意對象(ECCV-2024)

萬物生&#xff1a;Diffusion與綠幕摳圖&#xff0c;影視領域的福音~ 論文&#xff1a;DiffuMatting: Synthesizing Arbitrary Objects with Matting-level Annotation 代碼&#xff1a;https://github.com/HUuxiaobin/DiffuMatting &#xff08;即將開源&#xff09; 0、摘要 …

2024年06月CCF-GESP編程能力等級認證C++編程一級真題解析

本文收錄于專欄《C等級認證CCF-GESP真題解析》&#xff0c;專欄總目錄&#xff1a;點這里。訂閱后可閱讀專欄內所有文章。 一、單選題&#xff08;每題 2 分&#xff0c;共 30 分&#xff09; 第 1 題 在C中&#xff0c;下列不可做變量的是( )。 A. five-Star B. five_star C…

(補充):java各種進制和文本、圖像、音頻在計算機中的存儲方式

文章目錄 前言一、進制1 逢幾進一2 常見進制在java中的表示3 進制中的轉換(1)任意進制轉十進制(2)十進制轉其他進制二、計算機中的存儲1 計算機的存儲規則(文本數據)(1)ASCII碼表(2)編碼規則的發展演化2 計算機的存儲規則(圖片數據)(1)分辨率、像素(2)黑白圖與灰度…