[问题关于建构式的小问题

楼主: 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