c++之旅——第三彈

大家好啊,這里是c++之旅第三彈,跟隨我的步伐來開始這一篇的學習吧!

如果有知識性錯誤,歡迎各位指正!!一起加油!!

創作不易,希望大家多多支持哦!

?

一.命名空間;

1.命名空間的作用:

解決同名實體的沖突問題,同名變量可以通過括號的作用域來確定使用的是哪一個變量,而函數和類型(比如自定義的結構體類型)則不可以通過作用域來進行區別,所以使用命名空間來區分。提供代碼的模塊化和組織化,并提高代碼的可讀性和可維護性。

2.括號的分類:

定義域和作用域

(1)定義域:定義了一個結構體類型這種大括號就是定義域,后面加分號;

eg:

struct MyPoint

{

int x, y;

};//定義域

(2)作用域:函數體和命名空間這種用來區分管理的代碼區域的就是作用域,后面不加分號

eg:

namespace MyMath

{

int hp;//不建議在命名空間中進行變量的定義,因為引用開放命名空間后可能會導致變量的重命名沖突問題,這樣反而更不好管理代碼 //空間成員一般有:函數聲明,類型定義

}//作用域

在自己寫命名空間時,一般會寫在頭文件中,因為命名空間里面的函數聲明和類型定義一般就在頭文件中

3.定義命名空間的注意事項:

(1)、命名空間標識符必須滿足標識符的命名規則和命名規范,習慣名字唯一,通常以開發團隊的名字(項目名)來命名

(2)、命名空間可以在全局,也可以在局部(命名空間可以接受嵌套定義),但不能在函數內和類中定義!!!

(3) 、注意命名污染,盡量規避同名的出現,如果兩個命名空間名同名,那么就會合并兩個命名空間

4.命名空間的訪問:

通過作用域運算符 (::) 訪問命名空間中的成員

(1)、using 聲明:using 命名空間名稱 :: 空間成員名稱 ;

放開一個成員的可見性,這一個成員可以在空間外可見 ( 比較容易避免出現命名污染 )

eg:using std::string;

(2)、using 指示:using namespace 命名空間名 ;

放開該命名空間的所有權限(所有成員都在空間外可見),適用于該空間的大部分成員都需要經常被使用

eg:using namespace std;//這個語句在c++中經常可以看到,這是因為std命名空間是一個c++語言標準庫中的命名空間

(3)、命名空間名稱 :: 空間成員名稱,使用時直接訪問空間下的某一個成員(一般用于該成員不經常使用以及該命名空間也不經常使用的情況)

eg:std::string

5.有關命名空間的一些操作:

(1),給命名空間取一個別名以及命名空間嵌套時的使用:

//命名空間MYTool已經在頭文件中定義,并且.cpp源文件已經引用頭文件,命名空間MyMath在MyTool中嵌套著

namespace mt = MyTool;

using namespace mt;

using namespace MyMath;//引用該被嵌套的命名空間

(2),代碼片段理解:(要使用cin和cout函數的準備條件)

#include <iostream>//引用這個頭文件是讓編譯器認識cin和cout標識符 using std::cin;//放開命名空間中的這兩個函數是為了開放這兩個函數的使用權限 using std::cout;

二.cin和cout:

1.是C++ 中用來做輸入輸出的操作的函數,功能分別和 C 語言的 scanf 和 printf 一樣

2.使用示例:

int x,y;

cin>>x>>y;// 從鍵盤輸入

cout<<x<<"\n"<<y<<endl;//輸出

三.string的使用:

1.c++中string類型相對于C語言中的字符數組的優點:

(1)、string具有動態大小,避免浪費存儲空間

(2)、操作簡單,比如比較兩個字符串是否相等可以用==比較

(3)、有很多方便的字符串處理函數,比如獲取字符串長度,查找子串等等

2.使用string類型代碼:

#include <string>#include<iostream>using namespace std;int main(){string s("123214");//創建s字符串并賦值為123214s.append("x");//string類型中的追加函數,用于追加字符串s.append("123"); s += "abc";//字符串也可以直接使用加法來追加s = "wqsdalfjs";//使用=賦值號可以對字符串進行賦值操作s.erase(s.begin() + 1);//用于刪除字符串指定位置處的字符s.length();//得到字符串的長度s[0];//字符串的首個字符string s1;if (s == s1)//可以用==來判斷兩個字符串是否相等{cout<<1<<endl;}return 0;}

四.c++11的標準:

1、定義變量初始化新方式:

int a(10);

int x ={(int)1.23};//這種不允許值的類型和變量的類型不一樣

2、空指針

int *p = nullptr;//nullptr是關鍵字,相當于NULL宏

3、自動類型

auto x = 10;//根據值推導x的類型,此時x的類型為int

4、decltype

int a=1;decltype(a)b;//理解為使用a的類型定義了bdecltype((a))m=a;//再加一個圓括號,給a定義了一別名m

5、for 循環新規則

string str="abcdefghijkl";for(auto i:str)// 遍歷 str 輸出,這個只能實現遍歷而不能實現循環做某種操作{cout<<i<<endl;}

6、類型取別名

using MP=int;// 新寫法

//區別于C語言中的typedef,兩者對象順序是相反的

五,異常處理簡講:

try 塊,監視及捕獲異常 catch 塊,用來處理異常 throw 用來拋出異常

throw 用來拋出某個類型的數據,表示異常。在當前層級能被try捕獲則匹配當前try后面的catch,如果能匹配就處理,如果不能匹配往上層級傳遞

?

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

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

相關文章

項目設計:基于Qt和百度AI的車牌識別系統(嵌入式ARM)

基于Qt和百度AI智能云實現的智能車牌識別系統&#xff0c;具體可實現為停車場管理系統、智能計費停車系統…等。 1.系統實現思路及框架 1.1實現思路 要實現一個車牌識別系統&#xff0c;有多種方法&#xff0c;例如用opencv圖像算法實現&#xff0c;或用第三方算法接口&#x…

輸出梯形 C語言

解析&#xff1a;這個輸出圖形的題就是一個找規律加數學計算&#xff0c;我們發現每行比上一行多兩個*&#xff0c;最后一行的*表達式為h&#xff08;h-1&#xff09;*2&#xff0c;即3*h-2&#xff0c;那么每一行就是一個先輸出最后一行&#xff0d;當前行*個數個空格&#xf…

pytorch 圖像數據集管理

目錄 1.數據集的管理說明 2.數據集Dataset類說明 3.圖像分類常用的類 ImageFolder 1.數據集的管理說明 pytorch使用Dataset來管理訓練和測試數據集&#xff0c;前文說過 torchvision.datasets.MNIST 這些 torchvision.datasets里面的數據集都是繼承Dataset而來&#xff0c…

【Qt】QTextEdit/QPlainTextEdit 實現 Tab 鍵多行縮進與反縮進

【Qt】QTextEdit/QPlainTextEdit 實現 Tab 鍵多行縮進與反縮進 文章目錄 I - 主要原理II - 代碼實現2.1 - 自定義類2.2 - 實現 Tab 縮進2.3 - 實現反縮進III - 參考鏈接I - 主要原理 由于 QTextEdit 和 QPlainTextEdit ,都無法實現多行選中縮進與反縮進,選中多行后,按下縮進…

[Redis]——Redis命令手冊set、list、sortedset

&#x1f333;List類型常見命令 LPUSH / RPUSH [KEY] [element] …… 向列表左側或者右側插入一個或多個元素 LPOP / RPOP [key] 刪除左邊或者右邊第一個元素 LRANGE [key] start end 返回索引start到end的元素&#xff08;索引從0開始&#xff09; BLPOP / BRPOP [key] [等…

【C++】類的默認成員函數(上)

&#x1f525;博客主頁&#xff1a; 小羊失眠啦. &#x1f3a5;系列專欄&#xff1a;《C語言》 《數據結構》 《C》 《Linux》 《Cpolar》 ??感謝大家點贊&#x1f44d;收藏?評論?? 文章目錄 一、默認成員函數二、構造函數構造函數的概念及特性 三、析構函數析構函數的特性…

續簡單學生管理系統、包裝類--day18

Day18 一、刪除的思考題 思考題&#xff1a;刪除功能可以省略第一步嗎&#xff1f;不可以 有第一步判斷學生信息合法性&#xff0c;如果信息不合法會直接結束返回 如果沒有第一步&#xff0c;將會在第二步判斷是否有該學生query循環匹配查找&#xff0c;數據量大情況&#xff…

藍橋杯倒計時 43天 - 前綴和,單調棧

最大數組和 算法思路&#xff1a;利用前綴和化簡 for 循環將 n^2 簡化成 nn&#xff0c;以空間換時間。枚舉每個 m&#xff0c;m是刪除最小兩個數&#xff0c;那k-m就是刪除最大數&#xff0c;m<k&#xff0c;求和最大的值。暴力就是枚舉 m-O(n)&#xff0c;計算前 n-(k-m)的…

PCSA時鐘控制集成之時鐘門控級別

這一部分描述了&#xff1a; ? 時鐘門控的級別。 ? 實現最大效果的時鐘門位置。 ? 實現有效和高效時鐘門控的集成方法。 時鐘樹是由時鐘緩沖器構建的&#xff0c;這些緩沖器在時鐘源&#xff08;時鐘輸入或PLL&#xff09;與時鐘終端&#xff08;寄存器或RAM&#xff09…

ULN2003(COM的作用)

單路內部電路原理圖 三極管多級放大電路&#xff0c;最大可達到500ma&#xff1b; 典型應用&#xff1a; ULN2003屬于灌電流驅動方式&#xff1b;輸入與輸出電平反向&#xff0c;下拉4K電阻&#xff0c;為解決單片機上電IO瞬間不穩定&#xff1b; COM端 1.可懸空&#xff1a…

Java面題總結7

spring事務什么時候會失效 1:發生自調用&#xff0c;類里面使用this調用本類的方法&#xff08;&#xff09;此時這個this對象不是代理類&#xff0c;而是UserService對象本身 2&#xff1a;方法不是public 3&#xff1a;數據庫不支持事務 4&#xff1a;沒有被spring管理 …

git標簽操作

一.標簽管理 1.理解標簽 標簽 tag &#xff0c;可以簡單的理解為是對某次 commit 的?個標識&#xff0c;相當于起了?個別名,當我們需要回退到某個重要版本時&#xff0c;直接使?標簽就能很快定位到 2.創建標簽 ?先&#xff0c;切換到需要打標簽的分?上,然后&#xf…

經典目標檢測網絡Yolo——原理部分

目標檢測問題 分為兩個子問題: 找到圖片中哪些位置、哪些區域含有目標對象識別這些區域中的目標對象是什么基于CNN的目標檢測算法能夠很好的解決第二個問題,在一張圖片僅含一個對象,且該對象占據了整張圖片絕大部分面積時,基于CNN的對象識別算法具有很高的準確率。 一種定…

操作系統(1)——學習導論(Ⅱ)

目錄 小程一言專欄鏈接: [link](http://t.csdnimg.cn/6grrU) 學習導論&#xff08;Ⅱ&#xff09;操作系統-賞前人佳作大型操作系統大型操作系統的一些特點和功能舉例 服務器操作系統服務器操作系統特點和功能舉例 多處理器操作系統舉例 個人計算機操作系統舉例 掌上計算機操作…

什么是ACID屬性。在MySQL中,如何使用事務?給出一個使用事務的示例,并解釋其工作原理。

解釋什么是ACID屬性 ACID是數據庫事務正確執行的四個基本要素的縮寫&#xff0c;包括原子性&#xff08;Atomicity&#xff09;、一致性&#xff08;Consistency&#xff09;、隔離性&#xff08;Isolation&#xff09;和持久性&#xff08;Durability&#xff09;。這四個屬性…

設計模式:什么是設計模式?①

一、什么是設計模式&#xff1f; 1. 是一類程序設計思想 2. 是在大量實踐過程中摸索總結出的標準經驗提煉 3. 具有多樣性和豐富性&#xff0c;不同情況應用的思想不同 二、設計模式的好處 1. 代碼生產力和效率的提升 2. 讓代碼表現更為規整&#xff0c;簡潔。閱讀維護管理的成本…

【競技寶】DOTA2-夢幻聯賽S22:AR命懸一線 XG確定晉級淘汰賽

北京時間2024年2月28日&#xff0c;DOTA2夢幻聯賽S22的比賽在昨日進入小組賽第三個比賽日&#xff0c;本次夢幻聯賽共有AR、XG、IG三支中國區的隊伍參賽&#xff0c;那么經過三日激烈的比賽之后&#xff0c;目前三支隊伍的積分情況以及晉級形勢如何呢&#xff1f; XG XG是小組…

貪心(基礎算法)--- 區間選點

905. 區間選點 思路 &#xff08;貪心&#xff09;O(nlogn) 根據右端點排序 將區間按右端點排序 遍歷區間&#xff0c;如果當前區間左端點不包含在前一個區間中&#xff0c;則選取新區間&#xff0c;所選點個數加1&#xff0c;更新當前區間右端點。如果包含&#xff0c;則跳…

常見的算法

查找算法 基本查找 package MyApi.search;public class a01BasicSearchdemo01 {public static void main(String[] args) { int[] arr{131,127,147,81,103,23,7,79}; int number82;System.out.println(BasicSearch(arr,number));}public static boolean BasicSearch(int[] ar…

Java二叉樹(1)

&#x1f435;本篇文章將對二叉樹的相關概念、性質和遍歷等知識進行講解 一、什么是樹 在講二叉樹之前&#xff0c;先了解一下什么是樹&#xff1a;樹是一種非線性結構&#xff0c;其由許多節點和子節點組成&#xff0c;整體形狀如一顆倒掛的樹&#xff0c;比如下圖&#xff1…