应用题
请使用[答题]菜单命令或直接用VC6打开考生文件夹下的工程proj3,其中声明了一个人员信息类Person。在Person类中数据成员name、age和address分别存放人员的姓名、年龄和地址。构造函数Person用以初始化数据成员。补充编制程序,使其功能完整。在main函数中分别创建了两个Person类对象p1和p2,并显示两个对象信息,此种情况下程序的输出应为:
Jane 25 Beijing
Tom 22 Shanghai
注意:只能在函数Person中的“//********333********”和“//********666********”之间填入若干语句,不要改动程序中的其他内容。
//proj3.h
#include <iostream>
#include <string>
using namespace std;
class Person{
public:
char name[20];
int age;
char* address;
public:
Person (char* _name, int_age,char*_add =NULL); //构造函数
void info_display (); //人员信息显示
~Person (); //析构函数
};
void writeToFile (const char * path ='');
//proj3.cpp
#include <iostream>
#include <string>
#include 'proj3.h'
using namespace std;
Person::Person (char*_name, int_age, char* _add) :age (_age)
{
//把字符串_name复制到数组name中
//使address指向一个动态空间,把字符串_add复制到该数组中。
//******** 333********
//******** 666********
}
void Person::info_display ()
{
cout <<name << '\t' <<age << '\t';
if (address!=NULL)
cout << address << endl;
}
Person:: ~Person ()
{
if (address !=NULL)
delete[] address;
}
void main ()
{
char add[100];
strcpy(add, 'Beijing') ;
Person p1 ('Jane', 25, add) ;
p1.info_display () ;
strcpy(add, 'Shanghai');
Person * p2 =new Person ('Tom', 22, add);
p2 -> info_display () ;
delete p2;
writeToFile ('');
}
【正确答案】strcpy(name, _name); //把name中的内容复制到name中 address =new char[strlen(_add) +1]; //动态给address分配strlen(-add)+1大小的空间 strcpy(address, _add); //把_add中的内容复制到address中
【答案解析】[考点] 本题考查Person类,其中涉及数组、构造函数、成员函数和析构函数。 主要考查考生对构造函数的掌握,根据题目要求,首先使用strcpy()函数把字符串_name复制到数组name中,然后使用new语句分配一个动态空间,使address指向空间首地址,最后把字符串_add复制到该数组中。