#include <iostream>
#include <string>
using namespace std;
class student
{
private:
char *m_name;
int m_age;
public:
//构造函数(如果不写构造函数,系统会调用默认构造函数)
student(char *name,int age)
{
m_age = age;
m_name = new char[20]; //C++申请内存空间
// m_name = (char *)malloc(sizeof(char)*100);//C语言申请内存空间
strcpy(m_name,name);
}
student(const student &p) //拷贝构造函数
{
cout<<"-----copy-----"<<endl;
m_age = p.m_age;
m_name = new char[20];
// m_name = (char *)malloc(sizeof(char)*100);
strcpy(m_name,p.m_name);
}
~student() //析构函数
{
m_age = 0;
if(m_name != NULL)
{
// free(m_name); //C语言释放内存空间
delete[]m_name; //C++释放内存空间
m_name = NULL;
}
}
void print()
{
cout<<"name :"<<m_name<<'\t'<<"age:"<<m_age<<endl;
}
};
int main()
{
student stu1("gg",13); //调用构造函数
stu1.print();
student stu2(stu1); //深拷贝,调用自己写的拷贝构造函数
stu2.print();
return 0;
}