天天看點

C++知識點歸納(二)

函數在class裡面定義(侯老師的說法)

好處:快,好

注意:如果函數過于複雜,即使加了inline,編譯器也無法把它識别為inline函數

一般情況,資料和一些内部使用的函數都被定義為private,而想讓外界調用的函數則被定義為public

由上述結果可以,想要通路私有變量,隻能通過調用公有的方法來實作

C++知識點歸納(二)
C++知識點歸納(二)
C++知識點歸納(二)

單例模式:指一個類隻允許有一個執行個體

設計的思路就是把類的構造函數聲明為private,然後提供一個公共的接口使外部能夠通路到類的執行個體,如上圖

C++知識點歸納(二)

class中的函數分為兩種:

會改變資料 内容

不會改變資料内容(在函數後面加上const)

注意:右下角圖檔,當在class前面加const時,如果類中的函數後面沒有const會出錯

C++知識點歸納(二)

傳引用(四個位元組)就相當于傳指針那麼快,在參數傳遞的過程中盡可能都是傳引用;

傳引用的時候如果不希望被改變,可以加上const使不可改變;

當某一些變量位元組很小的時候可以考慮傳value;

C++知識點歸納(二)

傳回值的傳遞也盡量傳引用

C++知識點歸納(二)

友元函數可以直接拿private中的資料,友元函數相當于打開了封裝的大門

C++知識點歸納(二)
C++知識點歸納(二)

​<code>​如果兩個複數類型的相加是在**臨時變量**中進行的,執行完會被銷毀​</code>​,​<code>​這種情況不能使用傳引用的操作;​</code>​

而上圖中的加法操作是在第一個參數的位址空間中進行的,可以使用傳參數(​<code>​注意是這種情況可以傳引用​</code>​)

C++知識點歸納(二)

注意:

這裡是類外成員函數,需要在函數前面加上類名complex

成員函數分為類内和類外,并且需要注意一下和inline函數的差別

C++知識點歸納(二)
C++知識點歸納(二)
C++知識點歸納(二)

這裡就是前面提到的不能傳引用的情況,這裡的兩數相加會建立臨時對象,離開這個函數就會死亡,是以不能把reference傳出去,一傳出去,當臨時對象死亡時,外界就無法用到這個引用了,是以圖檔的中藍色部分一定要return by value。

臨時對象:**typename()**就是上面的三個return的後面部分

右圖中的黃色部分執行到下一行就會不見了,銷毀

C++知識點歸納(二)

上面的“+”這塊應該采用return by reference更好

注:傳參或者傳傳回值采用reference速度更快

C++知識點歸納(二)

上圖中“&lt;&lt;”這種特殊的操作符隻能寫成非成員函數(也就是全局的這種寫法)這種形式

繼續閱讀