下面这个是网上摘抄的示例:(http://zhidao.baidu.com/question/161985869.html)
#include<iostream.h>
#include<string.h>
#define NUM 100
class Student
{
private:
int name;
int sex;
int birthday;
int phone;
public:
Student(int n,int s,int b,int p);
~Student();
void input();
void output();
};
Student::Student(int n,int s,int b,int p)
{
cout<<"Exeduting constructor````"<<endl;
name=n;
sex=s;
birthday=b;
phone=p;
cout<<name<<','<<sex<<','<<birthday<<','<<phone<<endl;
}
Student::~Student()
{
cout<<"Exeduting destructor````"<<endl;
cout<<name<<'_'<<sex<<'_'<<birthday<<'_'<<phone<<endl;
}
void Student::input()
{
cout<<"姓名: "<<" ";
cin>>name;
cout<<"性别(0代表女生,1代表男生)"<<" ";
cin>>sex;
cout<<"出生年月日:"<<" ";
cin>>birthday;
cout<<"联系电话:"<<" ";
cin>>phone;
}
void Student::output( )
{
cout<<"输出信息:"<<endl;
cout<<name<<","<<sex<<","<<birthday<<","<<phone<<endl;
}
void main(int n,int s,int b,int p)
{
Student stu[NUM];
int i,j;
cout<<"input student number,number<=100:"<<endl;
cin>>j;
for (i=0;i<j;i++)
{
cout<<"请按照姓名、性别、出生年月日、联系电话的顺序输入第"<<"i+1"<<"个学生信息"<<endl;
stu[i].input();
stu[i].output();
}
}
问题表现:编译时出现类 Student : no appropriate default constructor available
问题解决:
增加一个缺省的构造函数Student()就可以了。 你在Student stu[NUM]时创建对象,但是没有给初始化的参数,所以程序就需要缺省的构造函数。如果你不声明Student(int n,int s,int b,int p);那么系统会自动为你创建一个缺省的构造函数;但是你声明了,系统就不自动创建了,需要你自己手动添加。
所以具体讲,
在 定义 Student stu[NUM] 前,必须完成一下步骤,在 Student类的h文件里,添加 Student();声明。然后在Student类的CPP文件里添加 Student(){}。
问题得以解决!