拷貝是構造行為,狀態取決於用於構造的物件;賦值是對已構造物件進行狀態更新。賦值側重於更新,構造側重於構造。
下面這個語句被識別為構造
string str=
;string strr=str;
//我是構造,不是賦值
下面這個語句被識別為賦值:
string str=
;string strr
strr=str;
//我才是賦值
等號「=」是賦值還是構造取決於左值是否第一次出現。
函式返回值如果是乙個類,那麼返回的物件首先將會被拷貝構造到乙個臨時物件,這個物件是const的。
a fun()
class aa(
const a& a)
a& operator=
(const a& a);~
a()int m_i;};
intmain()
結果如下:
create
create # dd物件建立
create # a物件建立
a copy constructor!
# 返回語句,拷貝構造臨時物件
delete # a物件析構
assignement constructor!
# 返回值賦值
delete # 臨時物件析構
delete # 主程序退出,dd物件析構
無論是拷貝構造還是狀態賦值,最好將其唯一的引數設定為const
屬性,這是因為: python賦值 淺拷貝和深拷貝的區別
首先需要了解下幾個概念 例 當我們寫a python 時,python直譯器幹的事情 建立變數a 建立乙個物件 分配一塊記憶體 來儲存值 python 將變數與物件,通過指標連線起來,從變數到物件的連線稱之為引用 變數引用物件 在這裡插入描述 1 對於非容器型別,如數字,字元,以及其它 原子 型別,...
python賦值 淺拷貝和深拷貝的區別
1 直接賦值 2 淺拷貝 3 深拷貝 直接賦值,就是對物件的引用,複製的是物件的位址值,名字不同,操作的還是同乙個物件。a 1,2 3,4 5 b a print b 1,2 3,4 5 淺拷貝,就是拷貝的是父物件,不會拷貝到內部的子物件 物件中儲存的是位址值,這裡直接拷貝位址值,沒有遞迴拷貝 b ...
賦值和拷貝
a 1,b a,則 a 和 b指向同一id位址即1的位置 我們把1比作一塊林地,a發現了這塊地,然後告訴了鄰居b,a和b都有相同的許可權在這塊地上伐木 a 1,2,3 4,5,6 b copy.copy a 淺拷貝只能轉殖a中第一層 1,2,3 深層中b還是和a指向同乙個 4,5,6 眾泰 b 發現...