為什麼C++中的物件之間能夠進行賦值?
阿新 • • 發佈:2018-12-30
C++中所有的 型別 變數都是 類 物件的形式,那麼C++中類物件之間是怎麼進行賦值操作的呢?
主要是因為C++存在拷貝建構函式,拷貝建構函式的定義如下所示:
類名(類名 &);
具體的例項如下所示:
#include <iostream>
using namespace std;
class Date
{
public:
Date(int y, int m, int d); // 建構函式
Date(const Date &date1); // 拷貝建構函式
void showDate();
private:
int year;
int month;
int day;
};
Date::Date(int y, int m, int d)
{
year = y;
month = m;
day = d;
cout << "呼叫建構函式" << endl;
}
Date::Date(const Date &date1)
{
year = date1.year;
month = date1.month;
day = date1.day;
cout << "呼叫拷貝建構函式" << endl;
}
void Date::showDate()
{
cout << year << "." << month << "." << day << endl;
}
int main()
{
Date d1(2018, 5, 20);
d1.showDate();
Date d2 = d1;
d2.showDate();
return 0;
}
顯示結果為:
呼叫建構函式
2018.5.20
呼叫拷貝建構函式
2018.5 .20
如果在類中沒有自定義拷貝建構函式,則預設的的建構函式的作用是:不同物件的資料成員之間進行賦值操作。
拷貝建構函式使用注意事項:當類中的資料成員存在指標時,使用預設的賦值運算子函式進行物件賦值時,可能會產生錯誤。