C++的一个作业,挺简单的,目的是让我们了解构造函数,但我写的怎么会有错误
#include<iostream.h>#include<string.h>classStudent{private:charname[10];intid;public:...
#include <iostream.h>
#include <string.h>
class Student
{
private:
char name[10];
int id;
public:
Student()
{
cout<<"无参构造被调用"<<endl;
}
~Student()
{
cout<<"析构函数被调用"<<endl;
}
Student(char *name, int id);
void SetInfor(char *name,int id);
char *GetName();
int GetID();
void printf();
};
void Student::SetInfor(char *name,int id)
{
strcpy(this->name,name);
this->id=id;
}
Student::Student(char *name, int id)
{
strcpy(this->name,name);
this->id=id;
cout<<"有参函数被调用"<<endl;
}
int Student::GetID( )
{
return id;
}
char *Student::GetName()
{
return name;
}
void main()
{
Student a("zhangsan", 1001);
a.printf();
Student b;
b.printf();
b.SetInfor("Tracy",01);
b.printf();
}
还有一个问题,b.printf(),b没有初始化,那输出会是什么 展开
#include <string.h>
class Student
{
private:
char name[10];
int id;
public:
Student()
{
cout<<"无参构造被调用"<<endl;
}
~Student()
{
cout<<"析构函数被调用"<<endl;
}
Student(char *name, int id);
void SetInfor(char *name,int id);
char *GetName();
int GetID();
void printf();
};
void Student::SetInfor(char *name,int id)
{
strcpy(this->name,name);
this->id=id;
}
Student::Student(char *name, int id)
{
strcpy(this->name,name);
this->id=id;
cout<<"有参函数被调用"<<endl;
}
int Student::GetID( )
{
return id;
}
char *Student::GetName()
{
return name;
}
void main()
{
Student a("zhangsan", 1001);
a.printf();
Student b;
b.printf();
b.SetInfor("Tracy",01);
b.printf();
}
还有一个问题,b.printf(),b没有初始化,那输出会是什么 展开
Sievers分析仪
2024-10-13 广告
2024-10-13 广告
是的。传统上,对于符合要求的内毒素检测,最终用户必须从标准内毒素库存瓶中构建至少一式两份三点标准曲线;必须有重复的阴性控制;每个样品和PPC必须一式两份。有了Sievers Eclipse内毒素检测仪,这些步骤可以通过使用预嵌入的内毒素标准...
点击进入详情页
本回答由Sievers分析仪提供
展开全部
代码中问题:
1。包含iostream.但是不能直接使用cout等,你需要说明名称空间,加上using namespace std;就OK了。
2。printf()函数没有声明。你可以重载此函数,输出name和ID,但是建议不要这么做。
3。定义构造函数的时候,应该给数据初始化。如:Student(){name='\0';id=0; cout<<"无参构造函数调用"<<endl;}
包含上面1和2,程序就可以运行了。你可以试一试。
你问的问题:b.printf()在b没有初始化时输出值不确定。
1。包含iostream.但是不能直接使用cout等,你需要说明名称空间,加上using namespace std;就OK了。
2。printf()函数没有声明。你可以重载此函数,输出name和ID,但是建议不要这么做。
3。定义构造函数的时候,应该给数据初始化。如:Student(){name='\0';id=0; cout<<"无参构造函数调用"<<endl;}
包含上面1和2,程序就可以运行了。你可以试一试。
你问的问题:b.printf()在b没有初始化时输出值不确定。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
#include <iostream>
#include <string.h>
using namespace std;
class Student
{
private:
char name[10];
int id;
public:
Student()
{
*name='\0';
cout<<"无参构造被调用"<<endl;
}
~Student()
{
cout<<"析构函数被调用"<<endl;
}
Student(char *name, int id);
void SetInfor(char *name,int id);
char *GetName();
int GetID();
void printf();
};
void Student::SetInfor(char *name,int id)
{
strcpy(this->name,name);
this->id=id;
}
Student::Student(char *name, int id)
{
strcpy(this->name,name);
this->id=id;
cout<<"有参函数被调用"<<endl;
}
int Student::GetID( )
{
return id;
}
char *Student::GetName()
{
return name;
}
void Student::printf() //你这个方法没有实现
{
cout<<"id="<<id<<",name="<<name<<endl;
}
int main()
{
Student a("zhangsan", 1001);
a.printf();
Student b;
b.printf();
b.SetInfor("Tracy",01);
b.printf();
return 0;
}
#include <string.h>
using namespace std;
class Student
{
private:
char name[10];
int id;
public:
Student()
{
*name='\0';
cout<<"无参构造被调用"<<endl;
}
~Student()
{
cout<<"析构函数被调用"<<endl;
}
Student(char *name, int id);
void SetInfor(char *name,int id);
char *GetName();
int GetID();
void printf();
};
void Student::SetInfor(char *name,int id)
{
strcpy(this->name,name);
this->id=id;
}
Student::Student(char *name, int id)
{
strcpy(this->name,name);
this->id=id;
cout<<"有参函数被调用"<<endl;
}
int Student::GetID( )
{
return id;
}
char *Student::GetName()
{
return name;
}
void Student::printf() //你这个方法没有实现
{
cout<<"id="<<id<<",name="<<name<<endl;
}
int main()
{
Student a("zhangsan", 1001);
a.printf();
Student b;
b.printf();
b.SetInfor("Tracy",01);
b.printf();
return 0;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你没有写void printf();的定义,仅仅声明了。
你是要输出name和id吧?
没初始化,b的name为空,id为0.
你是要输出name和id吧?
没初始化,b的name为空,id为0.
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你的 Student 类中没有关于 printf()函数的定义,所以无法调用。生成可执行代码的时候会报错,故需在类中添加printf()函数定义。
至于你所说的b没有初始化,输出结果不定,一般定义完之后(Student b;)立刻使用,结果b相应对象的值为0x00,如果在其他地方调用的话,其相应对象的值就不为0x00啦(自己可以测试一下)
至于你所说的b没有初始化,输出结果不定,一般定义完之后(Student b;)立刻使用,结果b相应对象的值为0x00,如果在其他地方调用的话,其相应对象的值就不为0x00啦(自己可以测试一下)
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
void printf();
你这句有问题吧,汗,用C的printf作函数名???
你这句有问题吧,汗,用C的printf作函数名???
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询