C++之友元的學習總結
一、友元的概念:1、什么是友元?友元是c++中的一種關系友元關系發生在函數與類之間或者類與類之間友元關系是單項的,不能傳遞2、友元的用法:在類中以friend關鍵字聲明友元類的友元可以是其它類或者具體函數友元不是類的一部分友元不受類中訪問級別的限制友元可以直接訪問具體類的所有成員3、友元的語法:在類中使用friend 關鍵字對函數或者類進行聲明:class Test{ double x; double y; friend void func(Test& t);};void func(Test& t){}注意:func() 全局函數是 Test 類的友元,func() 可以訪問Test 類的所有成員,但是 func() 不是 Test 的成員函數。示例代碼:#include <stdio.h>#include <math.h>class Test{......閱讀全文
C++之友元的學習總結
一、友元的概念:1、什么是友元?友元是c++中的一種關系友元關系發生在函數與類之間或者類與類之間友元關系是單項的,不能傳遞2、友元的用法:在類中以friend關鍵字聲明友元類的友元可以是其它類或者具體函數友元不是類的一部分友元不受類中訪問級別的限制友元可以直接訪問具體類的所有成員3、友元的語法:在類
C++之類模板的深入學習總結
一、類模板的深入學習:1、類模板可以定義任意多個不同的類型參數(這一點和模板函數一樣)template < typename T1, typenaem T2 >class Test{public: ? ?void add(T1 a, T2 b);}//定義類對象時Test2、類模板可以被特化指定類模
C++之操作重載符學習總結(一)
一、完善的復數類:在上一篇文章里面我們已經提到了操作符重載的概念和使用,同時也舉例了一個數學里面的復數操作,從一開始使用友元到使用操作符重載全局函數,再到使用操作符重載類成員函數,這樣一步步演變而成我們最終實現了復數的實部加實部,虛部加虛部;而且當時我們只講解了一個操作重載符“+”,所以為了完善學習
C++之操作重載符學習總結(二)
運行結果:上面設計到一些數學知識,比如復數的乘法和除法運算:乘法:(a+bi)(c+di)=(ac-bd)+(bc+ad)i除法:(a+bi)/(c+di)=(ac+bd)/cc+dd +(bc-ad)/cc +dd3、注意事項:C++規定賦值操作符"="只能重載為成員函數操作符重載不能改變原操作符
C++之類的繼承訪問級別學習總結(四)
輸出結果:root@txp-virtual-machine:/home/txp# ./a.outObjectPointP(1, 2)LineLine from P(1, 2) to P(5, 6)二、總結:面向對象中的訪問級別不只是public和privateprotected修飾的成員不能別外界所
C++之類的繼承關系學習總結(一)
一、類的組合關系:1、整體與部分的關系組合關系,從字面上來理解的話,就是誰也離不開誰,必須相互組合在一起才行,例如我們生活當中的電腦組成:代碼示例:#include <iostream>#include <string>using namespace std;class Memory{public:
C++之類的繼承關系學習總結(二)
二、類的繼承關系:說到這個繼承,你可以把它類比成生活當中的父親和兒子,兒子繼承的父親的長相特征。那么在我們面向對象中繼的承又是指什么呢?1、面向對象中的繼承是指類之間的父子關系子類擁有父類的所有屬性和行為子類就是一種特殊的父類子類對象可以當作父類對象使用子類中可以添加父類中沒有的方法和屬性2、繼承代
C++之類的繼承訪問級別學習總結(一)
一、繼承中的訪問級別學習:1、子類是否可以直接訪問父類的私用成員嗎?從面向對象理論角度來看:子類擁有父類的一切屬性和行為,也就是說,子類能夠直接訪問父類的私有成員。從c++的語法角度看:外界不能直接訪問類的private成員,也就是說,子類不能直接訪問父類的私用成員。代碼示例:#include <i
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++之字符串類學習總結(二)
三、字符串與數字的轉換:標準庫中提供了相關的類對字符串和數字進行轉換字符串流類(sstream)用于string的轉換相關頭文件istringstream字符串輸入流ostringstream字符串輸出流1、方法使用string---數字數字---string代碼示例:輸出結果:2、字符串循環右移比
C++之操作符重載學習總結(一)
一、操作符重載:1、我們先來看一個問題實現,下面的復數解決方案是否可行,復數大家應該都不陌生(分為實部和虛部):代碼版本一:運行結果:這里通過Add函數可以解決Complex對象相加的問題,但是在我們數學運算里面就是直接實部加實部,虛部加虛部,和正常的實數相加一樣,所以說,為什么不直接這樣操作呢,這
C++之操作符重載學習總結(二)
4、再次改進代碼:可以將操作符重載函數定義成為類的成員函數(前面我們學過,友元現代軟件開發不允許):比全局操作符重載函數少一個參數(左操作數,成員函數中隱藏的 this 參數可以充當左操作數的角色)不需要依賴友元就可以完成操作符重載編譯器優先在成員函數中尋找操作符重載(一旦在成員函數中找到,就不會去
C++之字符串類學習總結(一)
一、回顧c語言對字符串的實現:一般我們在c語言要實現對字符串操作的話,一般是采用字符數組或者一組函數來實現的,為啥這樣做呢,那是因為c語言里面根本就沒有字符串類型的關鍵字;而且c語言也支持自定義類型,所以更加無法獲得字符串類型。為了解決這個問題,在c++中,引入了自定義類型,而且可以通過類來完成對字
C++之繼承中的構造和析構學習總結(一)
在我們前面學習過類中的構造函數,以及析構函數,那么自然而然,在繼承關系中,必然是存在著析構和構造著。一、子類對象的構造1、問題的引出如何初始化父類成員?父類構造函數和子類構造函數有什么關系?2、子類中的構造函數怎樣初始化父類成員:子類中也是可以定義構造函數的:--必須對繼承而來的成員進行初始化,那么
C++之繼承中的構造和析構學習總結(二)
代碼實踐:輸出結果:注解:我們可以看到,先定義了一個Child對象,然后最先訪問Object帶參構造函數,然后再是Parent帶參構造函數(說白了就是父類先觸發),然后在子類Child中又包含了組合關系(也就是客人),然后Object類中的帶參構造函數,最后再觸發自身的帶參構造函數。二、子類對象的析
C++之靜態成員變量和靜態成員函數學習總結(二)
說明,這里靜態成員變量不能使用初始化列表去初始化,這里要明白上面說的那句話:靜態成員變量需要在類外單獨分配空間,換句話說,就是只有在類的外部重新定義靜態成員變量才可以存儲到靜態存儲區。報錯如下:root@txp-virtual-machine:/home/txp#?g++?test4.cpptest
C++之靜態成員變量和靜態成員函數學習總結(三)
3、靜態成員函數 vs ?普通成員函:靜態成員函數普通成員函數所有對象共享YesYes隱含this指針NoYes訪問普通成員變量(函數)NoYes訪問靜態成員變量(函數)YesYes通過類名直接調用YesNo通過對象名直接調用YesYes4、版本代碼四:#include?<stdio.h>class
C++之靜態成員變量和靜態成員函數學習總結(一)
上圖的板子有最近買的,也有以前買的(stm32、esp8266、51、eps32、小熊派、合宙的cat1、樹莓派3b+);說實話,這些板子買來,一直放在那里吃灰,后期自己的方向也不玩硬件開發板啥的;所以上面的板子都送給了公眾號讀者在校生,讓這些板子發揮它們最大的價值,板子也會在最近慢慢一一送出去;贈
被疫情重構的學習方式——元宇宙課堂
上海大學元宇宙課堂 蔣飛供圖 蘋果公司創始人喬布斯曾在美國斯坦福大學演講時說:“你不能預先把那些點點滴滴串在一起,唯有你在未來回顧時,才會明白那些點點滴滴是如何串在一起的。” 2020年,一場突如其來的新冠疫情讓人們意識到,已無法重新回到疫情之前面對面、全天候的工作和學習模式了。在全球
再論C++中的const和引用(一)
今天給大家分享一下這段時間學習c++的總結學習:c++里面的const關鍵字和引用。一、const關鍵字的總結1、const什么時候為只讀變量,什么時候又是常量呢?(1)const常量的判別規則:只用字面量初始化的const常量才會進入符號表使用其它變量初始化的const常量仍然是只讀變量被vola
楊衛訪談:NSFC的口號是成為科學家之友
??????? 2013年2月底,曾經在浙江大學主導一系列改革的校長,中國科學院院士楊衛調任國家自然科學基金委員會主任。上任伊始,楊衛就提出“拓探索之淵,浚創新之源,延交叉之淵,遂人才之愿”的基金委職能和定位。《國家科學評論》(以下簡稱“NSR”)在創刊號中以“中國自然科學基金委員會的新面孔:楊衛主
美東匯成完成數億元C++輪融資,趣道資產領投
12月12日消息,日前,美東匯成生命科技(昆山)有限公司(以下簡稱:美東匯成)宣布完成數億元C++輪融資,本輪融資由趣道資產領投。融資所得將用于消費醫療及生命科學存儲管線的開發及運營。 美東匯成于2017年在江蘇昆山起步,已成功實現微創外科器械CDMO業務大規模商業化,并將業務拓展進一步快速擴
Science顛覆舊觀點:學習不能單靠神經元
科學家們意外的發現,大腦膠質細胞(非神經元)生成新髓鞘的功能對于學習運動技能至關重要。 十月十六日Science雜志上發表的一項研究指出,髓鞘改變在學習運動技能中起到了不容忽視的作用,髓鞘是神經元軸突上的絕緣層。無法生成髓鞘的基因工程小鼠,在學習新運動技能時比對照組差得多。 “這篇文章清楚地
C++之類型轉換函數(一)
一、轉換構造函數的學習:1、回憶數據類型轉換:在平時寫代碼的時候,最怕的就是那種隱式數據類型轉換了,一不小心,軟件就bug不斷;而顯示數據類型(一般是程序自己去強制類型轉換,這個是我們能夠明顯的識別和掌控的)。為此我們這里總結了一副隱式類型轉換的圖:下面我們來幾個隱式轉換的例子:代碼版本一:#inc
C++之類型轉換函數(二)
輸出結果:root@txp-virtual-machine:/home/txp# ./a.outd =-200ui= 100(ui+i) = 4294967196Postive注解:通過打印(ui+i)的值我們發現,i原本是int數據類型,這里隱式轉換成無符號的數據類型了為了讓大家更加理解隱式的轉換
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++之類型轉換函數(四)
3、轉換構造函數出廠:我們前面學習過構造函數,構造函數它可以定義不同類型的參數;但是我們今天這里所說的轉換構造函數的定義時這樣的:有且僅有一個參數參數是基本類型參數是其它類型接著我們對上面的普通數據類型轉換類類型的代碼進行分析:#include <iostream>#include <string>
C++之類型轉換函數(六)
2、類類型之間的轉換:這個問題也是之前我們上面簡單的測試,不能進行類類型之間的轉換;現在我們學習了類型轉換函數,是可以進行轉換的:代碼版本一:#include <iostream>#include <string>using namespace std;class Test;class Value{
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