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

為了賬號安全,請及時綁定郵箱和手機立即綁定

請問有誰知道這樣寫為什么不行:把無參構造函數和有參構造函數放在類外定義。如下代碼

class Student

{

?public:

? ?Student()

? Student(string _name);

? ?Student(const Student& stu){};

? ?~Student(){};

? ?void setName(string _name);

? ?string getName();??

? ?

?private:

?string m_strName;

};

void Student::Student()

{

? ? ? ?m_strName=" ";

? ?}


void Student::Student(string _name)

? ?{

? ? m_strName=_name;

? ?}

void Student::setName(string _name)

{

? ? m_strName=_name;

}

string Student::getName()

{

? ? return m_strName;

}


int main(void)

{

? ? // 通過new方式實例化對象*stu

? ? Student *stu = new Student();

? ? // 更改對象的數據成員為“慕課網”

stu->setName("慕課網"); // 打印對象的數據成員

cout<<stu->getName()<<endl;

delete stu;

stu=NULL;

return 0;

}


正在回答

4 回答

lass Student

{

?public:

? ?Student(); //?在聲明類的時候Student()后面沒有;

? Student(string _name);

? ?Student(const Student& stu);? //?你這里是拷貝構造函數的聲明,已經在類外定義的不需要函數體, 去掉大括號,?

? ?~Student(){};

? ?void setName(string _name);

? ?string getName();??

? ?

?private:

?string m_strName;

};


##### 其他參考其他

0 回復 有任何疑惑可以回復我~
#1

精慕門5282345

我在另一邊看到,大括號是要要的,不要的話,就變成函數稱明
2019-11-16 回復 有任何疑惑可以回復我~
#2

精慕門5282345

是聲明
2019-11-16 回復 有任何疑惑可以回復我~

無參構造函數和有參構造函數放在類外定義沒有返回值,所以去掉void即可。ps:在定義類的時候Student()后面沒有;


0 回復 有任何疑惑可以回復我~

無參構造函數和有參構造函數在定義時都沒有返回值,在你定義的兩個構造函數的頭部應去掉void,并且,在類定義中,你的無參構造函數聲明Student()后面沒有加上分號

2 回復 有任何疑惑可以回復我~

無參構造函數和有參構造函數放在類外定義沒有返回值,所以去掉void即可。ps:在定義類的時候Student()后面沒有;


2 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消
C++遠征之封裝篇(上)
  • 參與學習       103391    人
  • 解答問題       732    個

封裝--面向對象的基石,本教程力求幫助小伙伴們即學即會

進入課程

請問有誰知道這樣寫為什么不行:把無參構造函數和有參構造函數放在類外定義。如下代碼

我要回答 關注問題
微信客服

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

幫助反饋 APP下載

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

公眾號

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