包含构造函数和析构函数的C++程序。
法一:
#include<iostream>
#include<string>
using namespace std;
class Student//声明Student类
{
public:
Student(int n, string nam, char s)//定义有参数的构造函数
{
num=n;
name=nam;
sex=s;
cout<<"Constructor called. "<<endl;//输出有关信息
}
~Student()//定义析构函数
{
cout<<"Destructor called. "<<endl;//输出有关信息
}
void display()//定义成员函数
{
cout<<"num: "<<num<<endl;
cout<<"name: "<<name<<endl;
cout<<"sex: "<<sex<<endl<<endl;
}
private:
int num;
string name;
char sex;
};
int main()//主函数
{
Student stud1(10010,"Wang_li",'f');//定义对象stud1
stud1.display();//输出学生1的数据
Student stud2(10011,"Zhang_fang",'m');//定义对象stud2
stud2.display();//输出学生2的数据
return 0;
}
法二:
#include<iostream>
#include<cstring>
using namespace std;
class Student//声明Student类
{
public:
Student(int n, const char *nam, char s)//定义有参数的构造函数
{
num=n;
strcpy(name, nam);
sex=s;
cout<<"Constructor called. "<<endl;//输出有关信息
}
~Student()//定义析构函数
{
cout<<"Destructor called. "<<endl;//输出有关信息
}
void display()//定义成员函数
{
cout<<"num: "<<num<<endl;
cout<<"name: "<<name<<endl;
cout<<"sex: "<<sex<<endl<<endl;
}
private:
int num;
char name[100];
char sex;
};
int main()//主函数
{
Student stud1(10010,"Wang_li",'f');//定义对象stud1
stud1.display();//输出学生1的数据
Student stud2(10011,"Zhang_fang",'m');//定义对象stud2
stud2.display();//输出学生2的数据
return 0;
}
在VS2019下,需将法二的strcpy做一些修改:
#include<iostream>
#include<cstring>
using namespace std;
class Student//声明Student类
{
public:
Student(int n, const char* nam, char s)//定义有参数的构造函数
{
num = n;
strcpy_s(name, strlen(nam)+1,nam);
sex = s;
cout << "Constructor called. " << endl;//输出有关信息
}
~Student()//定义析构函数
{
cout << "Destructor called. " << endl;//输出有关信息
}
void display()//定义成员函数
{
cout << "num: " << num << endl;
cout << "name: " << name << endl;
cout << "sex: " << sex << endl << endl;
}
private:
int num;
char name[100];
char sex;
};
int main()//主函数
{
Student stud1(10010, "Wang_li", 'f');//定义对象stud1
stud1.display();//输出学生1的数据
Student stud2(10011, "Zhang_fang", 'm');//定义对象stud2
stud2.display();//输出学生2的数据
return 0;
}
法三:
#include<iostream>
#include<cstring>
using namespace std;
class Student
{
public:
Student(int n, const char *nam, char s)
{
num=n;
char *p = name;
while (*p++=*nam++);
sex=s;
cout<<"Constructor called. "<<endl;
}
~Student()
{
cout<<"Destructor called. "<<endl;
}
void display()
{
cout<<"num: "<<num<<endl;
cout<<"name: "<<name<<endl;
cout<<"sex: "<<sex<<endl<<endl;
}
private:
int num;
char name[100];
char sex;
};
int main()
{
Student stud1(10010,"Wang_li",'f');
stud1.display();
Student stud2(10011,"Zhang_fang",'m');
stud2.display();
return 0;
}
法四:
#include<iostream>
#include<cstring>
using namespace std;
class Student
{
public:
Student(int n,const char nam[],char s)
{
num=n;
const char *p;
int i=0;
for(p=nam;nam[i]!='\0';p++,i++)
{
name[i]=*p;
}
name[i]='\0';
sex=s;
cout<<"Constructor called. "<<endl;
}
~Student()
{
cout<<"Destructor called. "<<endl;
}
void display()
{
cout<<"num: "<<num<<endl;
cout<<"name: "<<name<<endl;
cout<<"sex: "<<sex<<endl<<endl;
}
private:
int num;
char name[100];
char sex;
};
int main()
{
Student stud1(10010,"Wang_li",'f');
stud1.display();
Student stud2(10011,"Zhang_fang",'m');
stud2.display();
return 0;
}