C++相關基礎概念之入門講解(上)

1. 命名空間

C++中的命名空間(namespace)是用來避免命名沖突問題的一種機制。通過將類、函數、變量等封裝在命名空間中,可以避免不同部分的代碼中出現相同名稱的沖突。在C++中,可以使用namespace關鍵字來定義命名空間。

然后我們在調用的時候可以這樣:

std::cout<<"啊吧怪不啊吧"<<endl;

就是在我們使用的每一行只要使用了關于std這個命名空間里面的東西,那么就在前面加上這個,即(命名空間名字)加上::來表示。當然,我相信很多人都會覺得繁瑣,我們也可以在主函數外直接將命名空間展開,PS:一般來說我們自己寫的小型代碼可以直接展開,但是在一些大型的項目里面聽說是不允許直接展開大型的命名空間,因為這會使項目代碼運行速度過慢,因為要去里面一遍遍的重復查找那些函數,變量之類的。同時會造成命名空間沖突,使代碼無法正常運行。

1.1?命名空間定義

?
namespace struggle
{int a=10;class hash{........};
}?

現在我們創建了一個命名空間,然后在里面有一int類型的變量a,他的大小為10。然后我們可以調用他,當然,如果我們在main函數上面已經展開了這個名為struggle的命名空間,那么我們就不可以重復定義一個變量叫a,并且給他賦值為5,3,7,之類的了。

1.2?命名空間的使用

?
?
using namespace struggle;int main()
{int b=a;hash<int,int> myhash;............return 0;
}??

我們來看,在這張圖里面,首先在main的上方展開了這個名為struggle的命名空間,然后我們便可以直接在main里面使用a這個變量和hash這個類。

2. 輸入與輸出

在C++中,輸入與輸出分別是cin與cout,然后通過>>與<<來間隔。比如說cin>>a和cout<<a;因為有人說像水一樣流入與流出,所以他們也被稱為流輸入與流輸出。

PS:使用他們時必須包含<iostream>以及按命名空間使用方法使用std.

3.?缺省參數

3.1?缺省參數概念

缺省參數是指在函數或方法的定義中設置了默認值的參數,當調用該函數或方法時如果沒有傳入對應參數的值,則會使用默認值。這樣設計可以簡化函數調用時的語法,提高代碼的靈活性和可讀性。在一些編程語言中,缺省參數也被稱為默認參數。

?void func(int a=1)
{cout<<a<<endl;
}int main()
{    func();func(10);return 0;
}?

這個代碼的輸出結果是先輸出一個1,再輸出一個10。因為在這個代碼里面程序會先判斷你有沒有給值,如果沒有的話就會使用這個缺省參數,反之則不使用這個缺省參數。

3.2 缺省參數分類

缺省參數分為全缺省參數和半缺省參數。其實也很好理解,就是在函數體里面的每一個參數都有缺省值,那就是全缺省參數

?
?
void func(int a=1,int b=1)
{cout<<a<<b<<endl;
}int main()
{    func(10,10);return 0;
}??

如該圖中的func就是全缺省參數。

如果在函數體里面不是每一個參數都有缺省值,那就是半缺省參數

?void func(int a=1,int b)
{cout<<a<<b<<endl;
}int main()
{    func(10,10);return 0;
}

如該圖中的func就是半缺省參數,因為里面的b并沒有缺省值。

注意:如果說一個函數有兩個缺省值,那你傳過去的參數也不可以低于兩個。

4. 函數重載

函數重載(Function Overloading)是指在C++中允許定義多個同名函數,這些同名函數具有不同的參數列表或參數類型。在調用這些同名函數時,編譯器會根據參數的數量或類型來確定調用哪個函數。

?void print(int num) {cout << "Printing an integer: " << num << endl;
}void print(double num) {cout << "Printing a double: " << num << endl;
}int main() {print(10);print(3.14);return 0;
}?

在上面的示例中,定義了兩個名為print的函數,一個接受int類型的參數,另一個接受double類型的參數。在main函數中分別調用這兩個函數,根據參數類型的不同,編譯器會自動選擇調用對應的函數。

函數重載可以使代碼更加靈活,但需要注意避免出現歧義性的情況,以確保編譯器可以正確選擇需要調用的函數。

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

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

相關文章

網絡協議棧

網絡協議棧的位置 用戶在應用層的各種請求最終會下達給操作系統&#xff0c;操作系統內除了進程管理、文件管理、內存管理、驅動管理之外&#xff0c;還有一個內嵌的軟件協議棧&#xff0c;協議棧將用戶的數據進行各種封包后&#xff0c;通過網卡將數據傳遞到網絡當中&#xf…

C#索引器基礎到實踐

1. 封裝和隱藏內部實現 數組是一個簡單的數據結構,它的內部實現是固定的(基于連續內存)。而索引器可以隱藏內部的實現細節,允許開發者使用更復雜的數據結構來存儲數據,同時對外提供類似數組的訪問方式。 示例: 假設你有一個類,內部使用 Dictionary 或 List 來存儲數據…

C++之list類(超詳細)

在上一節中我們學習了STL中的vector這個容器&#xff0c;這節我們來學習一下另外一個常用的容器——list。 文章目錄 前言 一、list的介紹 二、list的使用及相關接口 1.list的使用 2.list的迭代器使用 3.list的相關接口 3.1 list capacity 3.2 list element access 3.3…

mysql、oracle、SQLserver之間的區別和優勢

MySQL、Oracle和SQL Server都是常見的關系型數據庫管理系統&#xff08;RDBMS&#xff09;&#xff0c;它們在某些方面有一些區別和優勢。 MySQL&#xff1a; MySQL是一種開源的RDBMS&#xff0c;由Oracle公司開發和維護。它具有快速、穩定和易于使用的特點。MySQL適用于中小型…

Python依賴包遷移到斷網環境安裝

首先&#xff0c;我應該確認兩臺電腦的操作系統都是Windows&#xff0c;所以架構和版本應該兼容。Python版本必須一致&#xff0c;否則可能會有問題。比如&#xff0c;如果電腦B用的是Python 3.8.5&#xff0c;電腦A也得裝同樣的版本&#xff0c;否則有些包可能不兼容。所以第一…

75.HarmonyOS NEXT ImageItemView組件深度剖析:手勢交互與動畫實現(二)

溫馨提示&#xff1a;本篇博客的詳細代碼已發布到 git : https://gitcode.com/nutpi/HarmonyosNext 可以下載運行哦&#xff01; HarmonyOS NEXT ImageItemView組件深度剖析&#xff1a;手勢交互與動畫實現(二) 一、手勢系統架構 .gesture(GestureGroup(GestureMode.Exclusiv…

Qt 控件概述 QWdiget

Qt為我們提供了很多控件&#xff0c;這些控件拿過來就可以使用 目錄 QWidget 屬性 WindowFrame的影響 QWidget Qt中所有的組件都是繼承自QWidget Qt Creator中的右側可以看到QWidget的各種屬性 其中各種屬性都可以在Qt文檔中找到說明 ? 屬性 enabled&#xff1a;描述該組…

適合企業內訓的AI工具實操培訓教程(37頁PPT)(文末有下載方式)

詳細資料請看本解讀文章的最后內容。 資料解讀&#xff1a;適合企業內訓的 AI 工具實操培訓教程 在當今數字化時代&#xff0c;人工智能&#xff08;AI&#xff09;技術迅速發展&#xff0c;深度融入到各個領域&#xff0c;AIGC&#xff08;人工智能生成內容&#xff09;更是成…

Axios 請求取消:從原理到實踐

Axios 請求取消&#xff1a;從原理到實踐 在現代前端開發中&#xff0c;網絡請求是不可或缺的一部分。Axios 是一個基于 Promise 的 HTTP 客戶端&#xff0c;廣泛應用于瀏覽器和 Node.js 環境中。然而&#xff0c;在某些場景下&#xff0c;我們可能需要取消正在進行的請求&…

Spring Boot對接twilio發送郵件信息

要在Spring Boot應用程序中對接Twilio發送郵件信息&#xff0c;您可以使用Twilio的SendGrid API。以下是一個簡單的步驟指南&#xff0c;幫助您完成這一過程&#xff1a; 1. 創建Twilio賬戶并獲取API密鑰 注冊一個Twilio賬戶&#xff08;如果您還沒有的話&#xff09;。在Twi…

【最后203篇系列】015 幾種消息隊列的思考

背景 隊列還是非常重要的中間件&#xff0c;可以幫助我們&#xff1a;提高處理效率、完成更復雜的處理流程 最初&#xff0c;我覺得只要掌握一種消息隊列就夠了&#xff0c;現在想想挺好笑的。 過去的探索 因為我用python&#xff0c;而rabbitmq比較貼合快速和復雜的數據處…

TensorFlow 與 TensorFlow Lite:核心解析與層應用

1. 引言 TensorFlow 是 Google 開發的開源機器學習框架&#xff0c;支持從數據預處理、模型訓練到推理部署的完整生命周期。然而&#xff0c;在嵌入式和移動設備上&#xff0c;原生 TensorFlow 過于龐大&#xff0c;因此 Google 推出了輕量級版本——TensorFlow Lite&#xff…

DeepSeek大模型在政務服務領域的應用

DeepSeek大模型作為國產人工智能技術的代表&#xff0c;近年來在政務服務領域的應用呈現多點開花的態勢。通過多地實踐&#xff0c;該技術不僅顯著提升了政務服務的效率與智能化水平&#xff0c;還推動了政府治理模式的創新。以下從技術應用場景、典型案例及發展趨勢三個維度進…

電子電氣架構 --- 分布到集中的動カ系統及基于域控制器的架構

我是穿拖鞋的漢子,魔都中堅持長期主義的汽車電子工程師。 老規矩,分享一段喜歡的文字,避免自己成為高知識低文化的工程師: 所有人的看法和評價都是暫時的,只有自己的經歷是伴隨一生的,幾乎所有的擔憂和畏懼,都是來源于自己的想象,只有你真的去做了,才會發現有多快樂。…

深入理解C/C++堆數據結構:從原理到實戰

一、堆的本質與特性 1.1 什么是堆數據結構&#xff1f; 堆&#xff08;Heap&#xff09;是一種特殊的完全二叉樹&#xff0c;它滿足以下核心性質&#xff1a; 堆序性&#xff1a;每個節點的值都滿足特定順序關系 結構性&#xff1a;完全二叉樹的結構特性&#xff08;除最后一…

Python學習第十七天

Django框架-SQLite3 介紹 Django內置了對 SQLite3 數據庫的支持。SQLite3 是一個輕量級的嵌入式數據庫引擎&#xff0c;非常適合開發、測試和小型項目。以下是關于 Django 中 SQLite3 的介紹和應用指南。&#xff08;除了這些還支持mysql、oracle以及其他查詢文檔&#xff0c;…

Docker 》》Docker Compose 》》network 網絡 compose

docker 默認的網絡 三種模式 # 列出所有當前主機上或Swarm集群上的網絡 docker network ls#查看網絡詳情 docker network inspect network名稱# 清除未使用的docker網絡 docker network prune -f# 創建網絡 ocker network create -d bridge 網絡名稱 docker network create –s…

Python數字信號處理之最佳等波紋濾波器階數估計原理

Matlab中的階數估計函數 在MATLAB中&#xff0c;使用firpmord函數可以估算等波紋FIR濾波器的最小階數。該方法基于Parks-McClellan算法&#xff0c;通過通帶和阻帶的頻率邊界、幅度響應及允許的最大誤差來自動計算參數。 rp 3; % Passband ripple in dB rs 40; …

JumpServer基礎功能介紹演示

堡壘機可以讓運維人員通過統一的平臺對設備進行維護&#xff0c;集中的進行權限的管理&#xff0c;同時也會對每個操作進行記錄&#xff0c;方便后期的溯源和審查&#xff0c;JumpServer是由飛致云推出的開源堡壘機&#xff0c;通過簡單的安裝配置即可投入使用&#xff0c;本文…

C++和C的區別

C和C語言雖然共享相似的語法&#xff0c;但在設計理念和功能特性上有顯著區別。以下是兩者的主要差異&#xff1a; 1. 編程范式 C&#xff1a;純過程式編程&#xff0c;強調函數和步驟。C&#xff1a;支持多范式&#xff0c;包括面向對象編程&#xff08;類、繼承、多態&…