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

作者: a2318aa (CASH 翔)   2016-02-17 20:31:50
各位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);
還是說要以其它形式才能將它分開寫?
小弟目前還是新手,許多細節還不是很清楚
各位高手,如果有其它的建議,也請和我分享,謝謝~
作者: LPH66 (-6.2598534e+18f)   2016-02-17 20:36:00
變數因為宣告後就能用, 因此初始化的動作必須跟著宣告
作者: s89227 (Kei)   2016-02-17 20:36:00
弱弱的問,預設值不是只能給最後一個參數嗎?
作者: LPH66 (-6.2598534e+18f)   2016-02-17 20:37:00
要分開只能另寫一個成員函數, 宣告後呼叫該成員函數初始化但「宣告後就能用」這性質就不見了, 要記得呼叫初始化函式>s89227 並不只, 唯一限制是某參數若給預設, 其後通通都要給; 不過對於成員函式, 預設值是寫在宣告處不是定義處也就是並不是像原 PO 這樣寫在定義這裡, 要寫在上面
作者: fatrabitree (胖兔子)   2016-02-17 22:28:00
不一定要是最後"一個",但一定要是最後也就是可以(not-default,default,default)
作者: a2318aa (CASH 翔)   2016-02-17 23:51:00
>LPH66是指這個初始化動作一定要在一開始就宣告, 而不能類似宣告陣列的方式宣告那些變數?>fatrabitree所以它是自後方宣告起的意思?
作者: LPH66 (-6.2598534e+18f)   2016-02-18 01:25:00
你所謂"宣告陣列的方式"是指?

Links booklink

Contact Us: admin [ a t ] ucptt.com