类和对象I-构造与析构函数(题目:补充函数定义)
class Person
{
private:
char *name;
int age;
public:
Person();
Person(const char*, int);
Person(const Person&);
~Person();
void show(){ cout << name << ", " << age << endl; }
};
Person::Person()
{
name = new char[1];
name[0] = '\0';
age = 0;
}
int main(){
Person a;
Person b("tom", 4);
Person c = b;
a.show();
b.show();
c.show();
return 0;
}
//请补充中间缺失的三个函数定义,使类完整。
参考如下:
Person::Person(const char* n, int a)//带参数的构造函数
{
name = new char[strlen(n) + 1];//注意动态数组内存开辟的大小
strcpy_s(name, strlen(n)+1,n);
age = a;
}
Person::Person(const Person&p )//拷贝构造函数
{
name = new char[strlen(p.name) + 1];
strcpy_s(name, strlen(p.name) + 1, p.name);
age = p.age;
}
Person::~Person()//析构函数
{
delete[] name;//动态内存释放
}