1. 程式人生 > >關於複製建構函式及關於類的簡單函式使用(C++)

關於複製建構函式及關於類的簡單函式使用(C++)

剛學C++,關於複製建構函式的思考: 關於複製建構函式 : 相當於在記憶體新建一個類,再把資料複製給目標。可以是不完全複製(也是其存在意義),比如資料加減等。

三種使用情景: 1.用已知物件初始化信物件; 2.形參為物件; 3.返回值為物件;

簡單函式: 1.宣告時和普通宣告一樣; 2.在定義中,可沒用形參,直接使用類裡面資料而不用逐層引用(如time.hour) 3.在呼叫時,是"物件名.函式名"形式,函式用物件名的資料,這也是上面無形成的原因,至於呼叫格式 4.應該和定義的“類名::函式名”

#include “pch.h” #include using namespace std;

class clock { public: void stime(); / /宣告時和普通宣告一樣;功能為顯示時間 clock(int a, int b, int c) : //建構函式,用於初始化 hour(a), min(b), sec© {} clock(const clock& p); //複製建構函式 void settime(int a, int b, int c);//功能為設定時間 void showtime();//功能為顯示時間 /* clock() :clock(50, 59, 58) {} //委託建構函式??還不是很熟練 clock(int hour) :clock() {}*/ private:int hour; int min; int sec; };

clock::clock(const clock &p) { hour = p.hour+1; min = p.min+1; sec = p.sec+1; cout <<"copy "<< endl; //複製構造,不是簡單複製,數值上+1 }

/* clock::clock(int a, int b, int c) : hour(a), min(b), sec© {}*/

/* void clock::settime(int a, int b, int c) { hour = a; min = b; sec = c; }*/

inline void clock::stime() //在定義中,可沒用形參,直接使用類裡面資料而不用逐層引用(如time.hour) { cout << hour << “:” << min << “:” << sec << endl; } inline void clock::showtime() { cout << hour << “:” << min << “:” << sec << endl; }

int main() { //int a, b, c; /cin >> a; cin >> b; cin >> c;/ clock time(5, 5, 9); //time.settime(a, b, c); clock time1(time); time1.showtime(); time.stime(); //在呼叫時,是"物件名.函式名"形式,函式用物件名的資料,這 return 0;//也 是 上面無形成的原因,至於呼叫格式 //應該和定義的“類名::函式名”對應

}

結果為: copy 6:6:10 5:5:9

可見引用了一次複製建構函式,6:6:10是複製構造後的time1; 5:5:9是原來的time。程式碼看看能不能發到資源,第一次用。