c++中拷貝構造函數和賦值運算符重載本質上一樣么
4 回答
拉風的咖菲貓
TA貢獻1995條經驗 獲得超2個贊
復制構造函數接受單個類類型引用形參,這個形參一般用const修飾。
class A
{ public:
A();;
A(const A&);
//.........
};
一般的類,編譯器合成的構造函數就能完成必要的工作。擔當類有一個數據成員是指針,或者成員表示在構造函數中分配的其他資源;在創建新對象時必須做一些特定工作。這兩種情況必須定義復制構造函數。
復制操作符重載,由operator后面跟所定義的操作符符號,通過定義名為operator=函數來對賦值進行定義。該操作符函數有兩個形參:第一個形參對應左邊的操作數(隱式綁定到this指針了),第二個形參對應右操作數。返回類型應該與內置賦值運算返回的類型相同,內置類型的賦值運算返回對右操作數的引用,賦值操作符也返回對同一類型的引用。
class B
{
public:
B& operator=(const B &);
};
可以使用合成復制構造函數的類通常也可以使用合成賦值操作符。一般來說,如果類需要復制構造函數,也就需要賦值操作符。
哆啦的時光機
TA貢獻1779條經驗 獲得超6個贊
假設你有一個類A,和一個已有的類對象b時
當你執行A a=b來創建對象a時調用的是拷貝構造函數,
當你執行A a;a=b時調用的是運算符重載
就功能而言,感覺差別不大
- 4 回答
- 0 關注
- 817 瀏覽
添加回答
舉報
0/150
提交
取消
