C++之類的繼承訪問級別學習總結(四)
輸出結果:root@txp-virtual-machine:/home/txp# ./a.outObjectPointP(1, 2)LineLine from P(1, 2) to P(5, 6)二、總結:面向對象中的訪問級別不只是public和privateprotected修飾的成員不能別外界所訪問protected使得子類能夠訪問父類的成員protected關鍵字為了繼承而專門設計的沒有protected關鍵字就無法完成真正代碼意義上的代碼復用了......閱讀全文
C++之類的繼承訪問級別學習總結(四)
輸出結果:root@txp-virtual-machine:/home/txp# ./a.outObjectPointP(1, 2)LineLine from P(1, 2) to P(5, 6)二、總結:面向對象中的訪問級別不只是public和privateprotected修飾的成員不能別外界所
C++之類的繼承訪問級別學習總結(三)
4、定義類時訪問級別的選擇:注解:從圖中我們可以發現,當有發生繼承關系時,就考慮使用protect關鍵字5、組合和繼承的綜合運用說明:Object這個類是被用來繼承的;Line和Point兩個類進行組合。代碼示例:#include <iostream>#include <string>#includ
C++之類的繼承訪問級別學習總結(二)
代碼實現#include <iostream>#include <string>using namespace std;class Parent{protected: ? ?int mv;public: ? ?Parent() ? ?{ ? ? ? ?mv = 100; ? ?} ? ? ? ?in
C++之類的繼承訪問級別學習總結(一)
一、繼承中的訪問級別學習:1、子類是否可以直接訪問父類的私用成員嗎?從面向對象理論角度來看:子類擁有父類的一切屬性和行為,也就是說,子類能夠直接訪問父類的私有成員。從c++的語法角度看:外界不能直接訪問類的private成員,也就是說,子類不能直接訪問父類的私用成員。代碼示例:#include <i
C++之類的繼承關系學習總結(二)
二、類的繼承關系:說到這個繼承,你可以把它類比成生活當中的父親和兒子,兒子繼承的父親的長相特征。那么在我們面向對象中繼的承又是指什么呢?1、面向對象中的繼承是指類之間的父子關系子類擁有父類的所有屬性和行為子類就是一種特殊的父類子類對象可以當作父類對象使用子類中可以添加父類中沒有的方法和屬性2、繼承代
C++之類的繼承關系學習總結(一)
一、類的組合關系:1、整體與部分的關系組合關系,從字面上來理解的話,就是誰也離不開誰,必須相互組合在一起才行,例如我們生活當中的電腦組成:代碼示例:#include <iostream>#include <string>using namespace std;class Memory{public:
C++之類模板的深入學習總結
一、類模板的深入學習:1、類模板可以定義任意多個不同的類型參數(這一點和模板函數一樣)template < typename T1, typenaem T2 >class Test{public: ? ?void add(T1 a, T2 b);}//定義類對象時Test2、類模板可以被特化指定類模
C++之繼承中的構造和析構學習總結(二)
代碼實踐:輸出結果:注解:我們可以看到,先定義了一個Child對象,然后最先訪問Object帶參構造函數,然后再是Parent帶參構造函數(說白了就是父類先觸發),然后在子類Child中又包含了組合關系(也就是客人),然后Object類中的帶參構造函數,最后再觸發自身的帶參構造函數。二、子類對象的析
C++之繼承中的構造和析構學習總結(一)
在我們前面學習過類中的構造函數,以及析構函數,那么自然而然,在繼承關系中,必然是存在著析構和構造著。一、子類對象的構造1、問題的引出如何初始化父類成員?父類構造函數和子類構造函數有什么關系?2、子類中的構造函數怎樣初始化父類成員:子類中也是可以定義構造函數的:--必須對繼承而來的成員進行初始化,那么
C++之類型轉換函數(四)
3、轉換構造函數出廠:我們前面學習過構造函數,構造函數它可以定義不同類型的參數;但是我們今天這里所說的轉換構造函數的定義時這樣的:有且僅有一個參數參數是基本類型參數是其它類型接著我們對上面的普通數據類型轉換類類型的代碼進行分析:#include <iostream>#include <string>
C++之友元的學習總結
一、友元的概念:1、什么是友元?友元是c++中的一種關系友元關系發生在函數與類之間或者類與類之間友元關系是單項的,不能傳遞2、友元的用法:在類中以friend關鍵字聲明友元類的友元可以是其它類或者具體函數友元不是類的一部分友元不受類中訪問級別的限制友元可以直接訪問具體類的所有成員3、友元的語法:在類
C++之操作重載符學習總結(二)
運行結果:上面設計到一些數學知識,比如復數的乘法和除法運算:乘法:(a+bi)(c+di)=(ac-bd)+(bc+ad)i除法:(a+bi)/(c+di)=(ac+bd)/cc+dd +(bc-ad)/cc +dd3、注意事項:C++規定賦值操作符"="只能重載為成員函數操作符重載不能改變原操作符
C++之操作重載符學習總結(一)
一、完善的復數類:在上一篇文章里面我們已經提到了操作符重載的概念和使用,同時也舉例了一個數學里面的復數操作,從一開始使用友元到使用操作符重載全局函數,再到使用操作符重載類成員函數,這樣一步步演變而成我們最終實現了復數的實部加實部,虛部加虛部;而且當時我們只講解了一個操作重載符“+”,所以為了完善學習
C++之字符串類學習總結(二)
三、字符串與數字的轉換:標準庫中提供了相關的類對字符串和數字進行轉換字符串流類(sstream)用于string的轉換相關頭文件istringstream字符串輸入流ostringstream字符串輸出流1、方法使用string---數字數字---string代碼示例:輸出結果:2、字符串循環右移比
C++之操作符重載學習總結(一)
一、操作符重載:1、我們先來看一個問題實現,下面的復數解決方案是否可行,復數大家應該都不陌生(分為實部和虛部):代碼版本一:運行結果:這里通過Add函數可以解決Complex對象相加的問題,但是在我們數學運算里面就是直接實部加實部,虛部加虛部,和正常的實數相加一樣,所以說,為什么不直接這樣操作呢,這
C++之字符串類學習總結(一)
一、回顧c語言對字符串的實現:一般我們在c語言要實現對字符串操作的話,一般是采用字符數組或者一組函數來實現的,為啥這樣做呢,那是因為c語言里面根本就沒有字符串類型的關鍵字;而且c語言也支持自定義類型,所以更加無法獲得字符串類型。為了解決這個問題,在c++中,引入了自定義類型,而且可以通過類來完成對字
C++之操作符重載學習總結(二)
4、再次改進代碼:可以將操作符重載函數定義成為類的成員函數(前面我們學過,友元現代軟件開發不允許):比全局操作符重載函數少一個參數(左操作數,成員函數中隱藏的 this 參數可以充當左操作數的角色)不需要依賴友元就可以完成操作符重載編譯器優先在成員函數中尋找操作符重載(一旦在成員函數中找到,就不會去
C++之類型轉換函數(三)
輸出結果(沒有編譯通過)root@txp-virtual-machine:/home/txp# g++ test.cpptest.cpp: In function ‘int main()’:test.cpp:21:14: error: cannot convert ‘Test’ to ‘int’ i
C++之類型轉換函數(二)
輸出結果:root@txp-virtual-machine:/home/txp# ./a.outd =-200ui= 100(ui+i) = 4294967196Postive注解:通過打印(ui+i)的值我們發現,i原本是int數據類型,這里隱式轉換成無符號的數據類型了為了讓大家更加理解隱式的轉換
C++之類型轉換函數(六)
2、類類型之間的轉換:這個問題也是之前我們上面簡單的測試,不能進行類類型之間的轉換;現在我們學習了類型轉換函數,是可以進行轉換的:代碼版本一:#include <iostream>#include <string>using namespace std;class Test;class Value{
C++之類型轉換函數(一)
一、轉換構造函數的學習:1、回憶數據類型轉換:在平時寫代碼的時候,最怕的就是那種隱式數據類型轉換了,一不小心,軟件就bug不斷;而顯示數據類型(一般是程序自己去強制類型轉換,這個是我們能夠明顯的識別和掌控的)。為此我們這里總結了一副隱式類型轉換的圖:下面我們來幾個隱式轉換的例子:代碼版本一:#inc
C++之類型轉換函數(五)
輸出結果:root@txp-virtual-machine:/home/txp# g++ test.cpptest.cpp: In function ‘int main()’:test.cpp:21:8: error: no match for ‘operator=’ (operand types
C++之類型轉換函數(七)
輸出結果:root@txp-virtual-machine:/home/txp# g++ test.cpptest.cpp: In function ‘int main()’:test.cpp:42:15: error: conversion from ‘Test’ to ‘Value’ is am
C++之靜態成員變量和靜態成員函數學習總結(二)
說明,這里靜態成員變量不能使用初始化列表去初始化,這里要明白上面說的那句話:靜態成員變量需要在類外單獨分配空間,換句話說,就是只有在類的外部重新定義靜態成員變量才可以存儲到靜態存儲區。報錯如下:root@txp-virtual-machine:/home/txp#?g++?test4.cpptest
C++之靜態成員變量和靜態成員函數學習總結(一)
上圖的板子有最近買的,也有以前買的(stm32、esp8266、51、eps32、小熊派、合宙的cat1、樹莓派3b+);說實話,這些板子買來,一直放在那里吃灰,后期自己的方向也不玩硬件開發板啥的;所以上面的板子都送給了公眾號讀者在校生,讓這些板子發揮它們最大的價值,板子也會在最近慢慢一一送出去;贈
C++之靜態成員變量和靜態成員函數學習總結(三)
3、靜態成員函數 vs ?普通成員函:靜態成員函數普通成員函數所有對象共享YesYes隱含this指針NoYes訪問普通成員變量(函數)NoYes訪問靜態成員變量(函數)YesYes通過類名直接調用YesNo通過對象名直接調用YesYes4、版本代碼四:#include?<stdio.h>class
C++之拷貝構造函數的淺copy和深copy(四)
輸出結果:root@txp-virtual-machine:/home/txp# g++ test.cpproot@txp-virtual-machine:/home/txp# ./a.outt1.i = 2, t1.j = 3, t1.p = 0xb0a010t2.i = 2, t2.j = 3,
超詳細的單鏈表學習教程(四)
70 }71 // 從鏈表pH中刪除節點,待刪除的節點的特征是數據區等于data72// 返回值:當找到并且成功刪除了節點則返回0,當未找到節點時返回-173int delete_node(struct node*pH, int data)74{75// 找到這個待刪除的節點,通過遍歷鏈表來查找76
ADS負載牽引設計要點總結(四)
好了,你現在可以放大圖9 中的功率輸出圖,放大后如圖10 所示:圖10、輸出功率圓放大圖現在你可以很方便地移動光標m3 了,把m3 移動一直到附近最大輸出功率顯示為54.48dBm,看到了吧,你體會到好處了吧,這個最大輸出功率就顯示在你要移動的光標附近!如圖11 所示:圖11、最大輸出功率局部放大圖