【发布时间】:2019-05-27 04:32:18
【问题描述】:
没有参数的构造函数工作,但另一个没有。 我很绝望,我什么都试过了
// 标题
class Etudiant
{
private:
char * name;
unsigned int age;
Date *datenaissance;
public:
Etudiant();
Etudiant(char * c,unsigned int,Date&);
~Etudiant();
};
这是我的 .cpp
Etudiant::Etudiant()
{
this->name = new char();
strcpy(name, "kabil");
this->age = 18;
this->datenaissance = new Date();
}
Etudiant::Etudiant(char * c, unsigned int a, Date &d)
{
this->name = new char();
strcpy(this->name,c);
this->age = a;
this->datenaissance = new Date(d);
}
Etudiant::~Etudiant()
{
delete[]name;
name = 0;
}
这是我的主线
int main()
{
Date d();
Etudiant E(),E1("student",15,d);
system("pause");
}
我应该改变什么?
【问题讨论】:
-
使用
std::string。并用Date d;替换Date d();,否则你声明一个函数。 -
@solomonk -- 不要只是“添加”。删除所有
char *内容并将其替换为std::string。 -
this->name = new char();这里分配一个字符。 -
为什么
datenaissance是一个指针?name=0应该是name=nullptr尽管它没用(法国的 C++ 课程通常很糟糕:()。 -
@Yksisarvinen -- 我没有说它不是 C++ 的一部分。问题是何时何地使用动态内存管理。 OP 的代码不需要对
new进行任何调用。其次,像这样给学生分配作业是 C++ 被放弃的主要原因之一,而这些学生却被 Java 或类似语言所吸引——当绝对不需要时,不能让最简单的程序正常工作是令人沮丧的对于那种挫败感。还有Stop teaching C when you're supposed to teach C++
标签: c++ arrays constructor char initialization