1. 程式人生 > >為什麼C++中的物件之間能夠進行賦值?

為什麼C++中的物件之間能夠進行賦值?

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

如果在類中沒有自定義拷貝建構函式,則預設的的建構函式的作用是:不同物件的資料成員之間進行賦值操作。
拷貝建構函式使用注意事項:當類中的資料成員存在指標時,使用預設的賦值運算子函式進行物件賦值時,可能會產生錯誤。