作者a2318aa (CashSiang)
看板C_and_CPP
標題[問題關於建構式的小問題
時間Wed Feb 17 20:31:50 2016
各位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
推 LPH66: 變數因為宣告後就能用, 因此初始化的動作必須跟著宣告 02/17 20:36
推 s89227: 弱弱的問,預設值不是只能給最後一個參數嗎? 02/17 20:36
→ LPH66: 要分開只能另寫一個成員函數, 宣告後呼叫該成員函數初始化 02/17 20:37
→ LPH66: 但「宣告後就能用」這性質就不見了, 要記得呼叫初始化函式 02/17 20:38
→ LPH66: >s89227 並不只, 唯一限制是某參數若給預設, 其後通通都要 02/17 20:39
→ LPH66: 給; 不過對於成員函式, 預設值是寫在宣告處不是定義處 02/17 20:39
→ LPH66: 也就是並不是像原 PO 這樣寫在定義這裡, 要寫在上面 02/17 20:40
→ fatrabitree: 不一定要是最後"一個",但一定要是最後 02/17 22:28
→ fatrabitree: 也就是可以(not-default,default,default) 02/17 22:28
→ a2318aa: >LPH66是指這個初始化動作一定要在一開始就宣告, 而不能 02/17 23:51
→ a2318aa: 類似宣告陣列的方式宣告那些變數? 02/17 23:53
→ a2318aa: >fatrabitree所以它是自後方宣告起的意思? 02/18 00:33
推 LPH66: 你所謂"宣告陣列的方式"是指? 02/18 01:25