C++中的建構函式與建立物件的(簡單)過程
阿新 • • 發佈:2019-01-07
<pre name="code" class="cpp">//構造方法 #pragma 在做遊戲的公司裡面初始化的方法有兩種風格 一種是init這是本來做蘋果轉過來的 另外一種是在構造方法裡面初始化 (這本來就是做C++的) #include <iostream> using namespace std; //類 class Time{ //預設是私有的 int hour; int min; int sec; // void dida(){ sec++; if (60 == sec) { sec = 0; min++; } if (60 == min) { min = 0; hour++; } if (24 == hour) { hour = 0; } } public: #pragma 構造方法: 沒有返回值 ,方法名與類名相同。構造方法在建立物件的時候一定會被動的呼叫一次。如果我們自己沒有寫構造方法,編譯器會幫我們寫一個無參的構造方法 //建構函式的引數可以給定預設值 /* Time (int h = 0,int m = 0,int s = 0){ cout << "Time (int h,int m,int s)在構造方法中初始化成員變數" << endl; //通常在構造方法裡面去初始化成員變數 hour = h; min = m; sec = s; } */ #pragma 初始化列表給成員變數初始化 //建構函式 可以用初始化列表 進行初始化 //只需要在引數括號後面加單冒號後面的就是初始化列表 Time (int h = 0,int m = 0,int s = 0):hour(h),min(m),sec(s){ cout << "初始化列表給成員變數初始化" << endl; } //過載 建構函式 /* Time() { hour = 0; min = 0; sec = 0; cout << "建立物件的時候如果沒有引數就預設找到這個無參的Time ()構造方法" << endl; } //如果把這個開啟註釋 main函式裡面Time t2;會出現報錯時因為上面的建構函式給定預設值了也可以不傳參 所以不知道用哪一個 */ //公開的初始化方法 void init(int h,int m,int s){ hour = h; min = m; sec = s; } //執行 void run(){ while (1) { show(); dida(); //代表一個時間 time_t cur = time(0);//0是獲取當前系統的時間 //注意理解 while (cur == time(0)) { //死迴圈1秒鐘 } } } //顯示 void show(){ cout << hour << "時" << min << "分" << sec << "秒" << endl; } }; //主函式 int main(int argc, const char * argv[]) { //建立物件 並把引數傳進去給建構函式 Time t(15,38,27); t.show(); //t.run();//這個函式是死迴圈 下面的程式碼不會執行 #pragma 現在我希望這樣也不報錯,那該怎麼辦? Time t2;// 一.方法過載 二.有參的構造方法給定引數的預設值 t2.run(); #pragma 在建立物件的時候 有引數的話就找到有參的建構函式。無引數的話就預設找到原來的無參的建構函式。 return 0; }