作者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://webptt.com/cn.aspx?n=bbs/C_and_CPP/M.1455712316.A.76F.html
1F:推 LPH66: 变数因为宣告後就能用, 因此初始化的动作必须跟着宣告 02/17 20:36
2F:推 s89227: 弱弱的问,预设值不是只能给最後一个参数吗? 02/17 20:36
3F:→ LPH66: 要分开只能另写一个成员函数, 宣告後呼叫该成员函数初始化 02/17 20:37
4F:→ LPH66: 但「宣告後就能用」这性质就不见了, 要记得呼叫初始化函式 02/17 20:38
5F:→ LPH66: >s89227 并不只, 唯一限制是某参数若给预设, 其後通通都要 02/17 20:39
6F:→ LPH66: 给; 不过对於成员函式, 预设值是写在宣告处不是定义处 02/17 20:39
7F:→ LPH66: 也就是并不是像原 PO 这样写在定义这里, 要写在上面 02/17 20:40
8F:→ fatrabitree: 不一定要是最後"一个",但一定要是最後 02/17 22:28
9F:→ fatrabitree: 也就是可以(not-default,default,default) 02/17 22:28
10F:→ a2318aa: >LPH66是指这个初始化动作一定要在一开始就宣告, 而不能 02/17 23:51
11F:→ a2318aa: 类似宣告阵列的方式宣告那些变数? 02/17 23:53
12F:→ a2318aa: >fatrabitree所以它是自後方宣告起的意思? 02/18 00:33
13F:推 LPH66: 你所谓"宣告阵列的方式"是指? 02/18 01:25