請問有誰知道這樣寫為什么不行:把無參構造函數和有參構造函數放在類外定義。如下代碼
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;
}
2019-03-06
lass Student
{
?public:
? ?Student(); //?在聲明類的時候Student()后面沒有;
? Student(string _name);
? ?Student(const Student& stu);? //?你這里是拷貝構造函數的聲明,已經在類外定義的不需要函數體, 去掉大括號,?
? ?~Student(){};
? ?void setName(string _name);
? ?string getName();??
? ?
?private:
?string m_strName;
};
##### 其他參考其他
2019-03-03
無參構造函數和有參構造函數放在類外定義沒有返回值,所以去掉void即可。ps:在定義類的時候Student()后面沒有;
2019-01-30
無參構造函數和有參構造函數在定義時都沒有返回值,在你定義的兩個構造函數的頭部應去掉void,并且,在類定義中,你的無參構造函數聲明Student()后面沒有加上分號
2019-01-09
無參構造函數和有參構造函數放在類外定義沒有返回值,所以去掉void即可。ps:在定義類的時候Student()后面沒有;