php拷貝構造函數(shù)、賦值運算符重載_PHP教程
推薦:php讀取操作大文件,超出內(nèi)存大小,三種方法在php中,對于文件的讀取時,最快捷的方式莫過于使用一些諸如file、file_get_contents之類的函數(shù),簡簡單單的幾行代碼就能 很漂亮的完成我們所需要的功能。但當所操作的文件是一個比較大的文件時,這些函數(shù)可能就顯的力不從心, 下面將從一個需求入手來說明對于讀取大文
對象的賦值與復制: 賦值:通過“ = ”運算符重載
User a(10),b;
b = a;
復制:調用復制構造函數(shù)
User b;
User a(b);
或者
User a = b;//相當于User a(b);
與賦值的區(qū)別,賦值是對一個已經(jīng)存在的對象進行賦值(已經(jīng)實現(xiàn)定義了被賦值的對象),而復制是從無到有建立一個新的對象,并使它與已有的對象相同。
淺復制與深復制: 若對象中有指針成員,在復制時,只會將該指針成員的地址復制給新建立的對象,因此,兩個對象中的指針成員都指向了同一塊內(nèi)存區(qū)域,在釋放時會出現(xiàn)重復釋放的問題。 需要手動定義復制構造函數(shù),在構造函數(shù)中將為指針變量分配新的內(nèi)存,是不同對象的指針成員指向不同的內(nèi)存區(qū)域。
用到拷貝構造函數(shù)的三種情況: 1、需要建立一個新對象,并用另一個同類對象對其進行初始化 2、函數(shù)的參數(shù)為類的對象時,在調用函數(shù)時需要建立一個實參的拷貝,按實參復制一個形參,系統(tǒng)是通過調用拷貝構造函數(shù)實現(xiàn)的 3、函數(shù)的返回值是類的對象:函數(shù)調用結束時,需要將函數(shù)中的對象復制一個臨時對象,并傳給該函數(shù)的調用處。
User getUser()
{
User temp;
return temp;
}
int main()
{
User user = getUser();//調用getUser();
}
getUser()函數(shù)調用結束時,getUser中建立的對象temp的生命周期結束(即將銷毀),所以不是將temp帶回main,而是在執(zhí)行return語句時,調用User類的拷貝構造函數(shù),按temp拷貝一個新的、對象,然后將它賦值給user.
分享:php數(shù)組排序A.內(nèi)部排序(直接加載到內(nèi)存進行排序):包括交換式排序(冒泡和快速法)、選擇式排序、插入式排序 B.外部排序(因數(shù)據(jù)量大,需借助外部存儲進行排序):包括合并排序、直接合并排序 【冒泡排序:從后向前,依次比較相鄰元素的排序碼,若發(fā)現(xiàn)逆序則交換,一輪結束后,再
- 相關鏈接:
- 教程說明:
PHP教程-php拷貝構造函數(shù)、賦值運算符重載
。