[問題關於建構式的小問題

看板C_and_CPP作者 (CashSiang)時間9年前 (2016/02/17 20:31), 編輯推噓3(3010)
留言13則, 4人參與, 最新討論串1/1
各位c的高手,小弟在綀習寫物件、類別的建構式的時候,遇到了一個問題 #include<iostream> using namespace std; class student{ public: int id,chinese,math; student(int vid,int vchinese,int vmath); void show(){ cout<<"id:"<<"\t"<<id<<"\n"<<"math:"<<"\t"<<math<<"\n"<<"chinese:"<<"\t"<<chinese<<"\n"; }; }; student::student(int vid=7,int vchinese=60,int vmath=60):id(vid),chinese(vchinese),math(vmath) { } int main(){ student marry; marry.show(); student jack(2318,95,98); jack.show(); return 0; } 以上是全部的程式內容,在最後的 student jack(2318,95,98); 中,為何不能寫作 student jack; jack(2318,95,98); 還是說要以其它形式才能將它分開寫? 小弟目前還是新手,許多細節還不是很清楚 各位高手,如果有其它的建議,也請和我分享,謝謝~ -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 120.107.188.16 ※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1455712316.A.76F.html

02/17 20:36, , 1F
變數因為宣告後就能用, 因此初始化的動作必須跟著宣告
02/17 20:36, 1F

02/17 20:36, , 2F
弱弱的問,預設值不是只能給最後一個參數嗎?
02/17 20:36, 2F

02/17 20:37, , 3F
要分開只能另寫一個成員函數, 宣告後呼叫該成員函數初始化
02/17 20:37, 3F

02/17 20:38, , 4F
但「宣告後就能用」這性質就不見了, 要記得呼叫初始化函式
02/17 20:38, 4F

02/17 20:39, , 5F
>s89227 並不只, 唯一限制是某參數若給預設, 其後通通都要
02/17 20:39, 5F

02/17 20:39, , 6F
給; 不過對於成員函式, 預設值是寫在宣告處不是定義處
02/17 20:39, 6F

02/17 20:40, , 7F
也就是並不是像原 PO 這樣寫在定義這裡, 要寫在上面
02/17 20:40, 7F

02/17 22:28, , 8F
不一定要是最後"一個",但一定要是最後
02/17 22:28, 8F

02/17 22:28, , 9F
也就是可以(not-default,default,default)
02/17 22:28, 9F

02/17 23:51, , 10F
>LPH66是指這個初始化動作一定要在一開始就宣告, 而不能
02/17 23:51, 10F

02/17 23:53, , 11F
類似宣告陣列的方式宣告那些變數?
02/17 23:53, 11F

02/18 00:33, , 12F
>fatrabitree所以它是自後方宣告起的意思?
02/18 00:33, 12F

02/18 01:25, , 13F
你所謂"宣告陣列的方式"是指?
02/18 01:25, 13F
文章代碼(AID): #1Mn6WyTl (C_and_CPP)