筆記9 《C++ 大學教程》
第十一章 運算子過載:字串和陣列物件
運算子過載通過編寫非static
成員函式的定義或全域性函式的定義來實現,其中函式名由關鍵字operator
後接要過載的運算子符號組成。但運算子過載為成員函式是,成員函式必須是非static
的
如果要對類使用運算子,那麼運算子必須要被過載,但有三個例外:賦值運算子(=
),取地址運算子(&
),逗號運算子(,
),過載運算子不能改變運算子優先順序和結合律,不能改變操作“元”數。不能創造新的運算子,只能過載。
當過載()
,[]
,->
或任意賦值運算子時,運算子過載函式必須申明為類的成員。對於其他,可以為類的成員或全域性函式
拷貝建構函式通過複製一個類現有物件的成員來初始化該類的一個新物件
轉換運算子可以將某個類的物件轉換成另一個類的物件或基本型別的物件。
標準string
類定義在標頭檔案<string>
中,屬於名稱空間std
類string
提供empty
成員函式,如果string
為空,則返回true
否則返回false
. 成員函式substr
獲得一個子字串,該字串長度由第二個引數指定,起始位置由第一個引數指定。[]
不進行邊界檢查,at
進行邊界檢測
C++提供關鍵字explicit
,可以阻止不應該允許的經過轉換建構函式進行的隱式轉換的發生。
相關推薦
筆記9 《C++ 大學教程》
第十一章 運算子過載:字串和陣列物件 運算子過載通過編寫非static成員函式的定義或全域性函式的定義來實現,其中函式名由關鍵字operator後接要過載的運算子符號組成。但運算子過載為成員函式是,成員函式必須是非static的 如果要對類使用運算子,那麼運
筆記2 《C++大學教程》
第二章 C++程式設計入門 單行註釋以雙斜線符號“//”開始,多行註釋以“/*”開始,以“*/”結束。 前處理器指令以“#”開頭 轉義序列 轉義序列 -說明 \n 換行符 \t 水平製表符 \r 回車符 \a 響鈴符 \ 反斜線符號 \’
筆記7 《C++大學教程》
第八章 指標和基於指標的字串 有三種可以用來初始化指標:0 NULL 一個同類型物件的地址 0是唯一個不須經過強制型別轉換就賦值給指標的整數。 & 運算子返回運算元的記憶體地址 一元運算子sizeof,返回陣列(任何其他資料型別、變數或常量)的位
C++大學教程(第九版)pdf
第1章 計算機和C 簡介1.1簡介1.2計算機和網際網路在工業和研究領域中的應用1.3硬體和軟體1.4資料的層次結構1.5機器語言、 組合語言和高階語言1.6 C1.7程式設計語言1.8物件技術介紹1.9典型的C 程式開發環境1.10試執行一個C 應用程式1.11作業系統1.12網際網路和全球資訊網1.13軟
《C程式快速進階大學教程》第9章一維陣列程式設計題
隨機產生若干個10以內的自然數儲存在陣列中,刪除其中重複的元素,輸出原陣列與新陣列。 #include <stdio.h> #include <stdlib.h> #include <math.h> #define N 11 //1.
《C#圖解教程》讀書筆記之四:類和繼承
intern html pan 類中訪問 ted obj 小寫 his new 本篇已收錄至《C#圖解教程》讀書筆記目錄貼,點擊訪問該目錄可獲取更多內容。 一、萬物之宗:Object (1)除了特殊的Object類,其他所有類都是派生類,即使他們沒有顯示基類定義。
sqlite學習筆記9:C語言中使用sqlite之插入數據
name article void num mes cut cpp content int 前面創建了一張表,如今給他插入一些數據。插入數據跟創建表差點兒相同,不過SQL語言不一樣而已,完整代碼例如以下: #include <stdio.h> #inclu
[學習筆記—Objective-C]《Objective-C-基礎教程 第2版》第十一章 屬性
變量名 erl .text nonatomic syn split view 不能 -name 11.1 使用屬性值 @property float rainHandling; //表明此類具有float類型的屬性,其名稱為rainHandling
43、我的C#學習筆記9
c#特殊運算符:is運算符is運算符用於檢查變量是否為指定的類型。如果是,返回真;否則,返回假。比如:創建一個控制臺應用程序,判斷整型變量i是否為整數類型。代碼如下:int i=0;bool result=(i is int);Console.WriteLine(result);Console.ReadLin
《C程式設計快速進階大學教程》第8章程式設計題
關於階乘的數值問題,嘗試用各種迴圈語句實現: (1)編寫程式求n階乘。輸入一個正整數n,輸出其階乘 的值。 (2)編寫程式求階乘和。對於一個正整數m,輸出1~m的階乘和 。 (3)編寫程式求常量e的近似值,估算公式如下: (4)編寫程式計算的 值,公式如下: #incl
《C程式設計快速進階大學教程》第七章測試
1、 三角形可分為一般三角形、直角三角形、等腰三角形或等邊三角形。 設計一個程式,推斷三角形的類別並及時面積。輸入三角形的三條邊的邊長,如果三條邊能構成三角形,則輸出三角形的面積及種類。 測試用例: 輸入: 1.1,2.2,3.3 輸出:不是三角形 輸入: 3,4,5 輸出: 直角三角形
《C程式設計快速進階大學教程》第六章程式設計題
1.輸入一個5位整數,將每位的資料進行分離,要求逆序輸出對應的數,即分別按照字元型輸出個位、十位、百位、千位以及萬位上的整數。例如,輸入12345,輸出5-4-3-2-1。 #include <stdio.h> #include <stdlib.h> int m
《C程式設計快速進階大學教程》第五章程式題
1.編寫程式求三個整型數的和、積和平均值,輸入三個數的值,輸出結果。 #include <stdio.h> #include <stdlib.h> int main() { int a,b,c; scanf("%d %d %d",&a,&
函式的過載(C++學習筆記 9)
C語言不允許過載 在傳統C語言中,函式名必須是唯一的,也就是說不允許出現同名的函式, 例如,當要求編寫求整數、長整型數和雙精度數的二次方的函式時,若用C來處理,必須編寫3個函式,這3個函式的函式名不允許同名。例如: Isquare( int i ); //求整數的二次方
JavaScript教程筆記(9)-陣列
1 定義 陣列(array)是按次序排列的一組值。每個值的的位置都有編號(從0開始),整個陣列用方括號表示。 var arr = ['a', 'b', 'c']; 陣列在定義時賦值,也可以先定義後賦值。任何型別的資料,都可以放入陣列。 var arr = [ '
C++基礎教程面向物件學習筆記及心得感悟[圖]
C++基礎教程面向物件學習筆記及心得感悟[圖] 使用友元函式過載算術運算子: C ++中一些最常用的運算子是算術運算子 - 即加號運算子(+),減運算子( - ),乘法運算子(*)和除法運算子(/)。請注意,所有算術運算子都是二元運算子 - 這意味著它們需要兩個運算元 - 運算子的每一側都有一個運算
C++ primer 讀書筆記 9.2 容器庫概覽
模板類 list<int> deque<double> 也可以定義容器的容器, vector<string> vector<vector<string>> 迭代器 迭代器範圍 [begin, end)
C++基礎教程面向物件(學習筆記(84))
移動建構函式並移動賦值 在前面智慧指標和移動語義的介紹中,我們看了一下std :: auto_ptr,討論了移動語義,並看了一下在為複製語義設計的函式時出現的一些缺點(複製建構函式)和複製賦值運算子被重新定義以實現移動語義。 在本課中,我們將深入研究C ++ 11如何通過移動建構函式
C++基礎教程面向物件(學習筆記(83))
R值參考 我們需要了解l值和r值,然後告訴你不要太擔心它們。這是C ++ 11之前的建議。但是理解C ++ 11中的移動語義需要重新審視該主題。所以我們現在就這樣做。 L值和r值 儘管名稱中包含“值”一詞,但l值和r值實際上不是值的屬性,而是表示式的屬性。 C ++中的每個表
C++基礎教程面向物件(學習筆記(104))
字串的流類 到目前為止,您所看到的所有I / O示例都是寫入cout或從cin讀取。但是,還有另一組類稱為字串的流類,允許您使用熟悉的插入(<<)和提取(>>)運算子來處理字串。與istream和ostream一樣,字串流提供了一個緩衝區來儲存資料。但是,與cin