📄 demo_copy_constructor_5.cpp
字号:
//***************************************************
# include <iostream.h>
# include <string.h>
# include <stdlib.h>
class Person
{
public:
Person(char* pN); //浅拷贝
Person(Person& p); //深拷贝(这里没有深拷贝而只有浅拷贝时会出错)
~Person(); //析构
protected:
char* pName;
};
Person::Person(char* pN) //浅拷贝定义
{
cout<<"Constructing "<<pN<<endl;
pName=new char[strlen(pN)+1];
if(pName==NULL)
{
cout<<"Can't allocate more memory,terminating.\n";
exit(1);
}
strcpy(pName,pN);
}
Person::Person(Person& p) //深拷贝定义
{
cout<<"Copying "<<p.pName<<" into its own block"<<endl;
pName=new char[strlen(p.pName)+1];
if(pName==NULL)
{
cout<<"Can't allocate more memory,terminating.\n";
exit(1);
}
strcpy(pName,p.pName);
}
Person::~Person() //析构定义
{
cout<<"Destructing "<<pName<<endl;
pName[0]='\0';
delete pName;
// delete[] pName;
}
void main()
{
Person p1("Jenny");
Person p2(p1); //等价于: p2=p1
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -