亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

為什么這里不可以直接傳給構造函數?

為什么這里不可以直接傳給構造函數?

C++
侃侃爾雅 2023-04-20 15:15:14
#include "iostream.h"#include "string.h"class stud //新建一個學生類{private:int no;//學號char name[10];//姓名int deg;//成績public:static int sum;//總分static int num;//人數stud(){}stud (int no1,char *name1,int deg1)//構造函數{no=no1;strcpy(name,name1);deg=deg1;sum+=deg;num++;}void disp(){cout<<"學號:"<<no<<endl<<"姓名:"<<name<<endl<<"成績:"<<deg<<endl;}float avg(){return float (sum)/deg;}};int stud:: num=0;int stud:: sum=0;main(){  stud a[3];//定義a數組,準備用循環建立3個學生對象int no2,deg2;char name2[10];for(int i=0;i<3;i++){cin>>no2>>name2>>deg2;a[i].stud(no2,name2,deg2);//調用構造函數,報類型錯,這里是向把這三個變量傳給構造函數}for(int j=0;j<3;j++){a[j].disp();}cout<<"sum="<<stud::sum<<' '<<"num="<<stud::num<<endl;}
查看完整描述

3 回答

?
炎炎設計

TA貢獻1808條經驗 獲得超4個贊

構造函數是一種特殊的成員函數。當說明對象時,被自動調用,而不能象普通成員函數那樣被顯示調用。
如果想完成你的想法,把你的帶參數的構造函數改為普通成員函數就可以了。


查看完整回答
反對 回復 2023-04-23
?
繁星點點滴滴

TA貢獻1803條經驗 獲得超3個贊

構造函數C++規定不能顯式調用:a[i].stud(no2,name2,deg2);
原因是構造函數只是在創建對象時才調用,你的不是構建,此時對象已經存在了
如果實在是想這樣做,可以利用無名對象賦值這樣做
a[i]=stud(no2,name2,deg2);
已存在對象只能用賦值或者另外設計一個類似的成員函數來調用

查看完整回答
反對 回復 2023-04-23
?
慕勒3428872

TA貢獻1848條經驗 獲得超6個贊

這樣試試
int sum; //不要放到class中
int num; //不要放到class中
class stud
{
private:
int no;
char name[10];
int deg;
public:
stud ()
{
no=0;
deg=0;
memset( name , 0 , sizeof(name) );
}
void student (int &no1,char *name1,int °1)
{
no=no1;
memcpy( name , name1 , sizeof(name) );
deg=deg1;
sum+=deg;
num++;
}
void disp()
{
cout<<"學號:"<<no<<endl
<<"姓名:"<<name<<endl
<<"成績:"<<deg<<endl;
}
float avg()
{
return float (sum)/deg;
}

} ;
int main()
{
stud a[3]; //聲明一個對象數組,進行對象數據初始化,我加了一個構造函數
int no2,deg2;
char name2[10];
sum=0;
num=0;
for(int i=0;i<3;i++)
{
cin>>no2>>name2>>deg2;
a[i].student(no2,name2,deg2);//這里不要再調用構造函數
}
for(int j=0;j<3;j++)
{
a[j].disp();
}
cout<<"sum="<<sum<<' '<<"num="<<num<<endl;
return 0;
}

查看完整回答
反對 回復 2023-04-23
  • 3 回答
  • 0 關注
  • 166 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號