PROGRAMMING LANGUAGE/C++

복사 생성자

JC0 2021. 11. 18. 20:45
#include <iostream>
using namespace std;

class Person
{
private:
	char* name;
public:
	Person(const char* str)   
	{
		name = new char[strlen(str) + 1];
		strcpy_s(name, strlen(str) + 1, str);
	}
	Person(const Person& per)
	{
		name = new char[strlen(per.name) + 1];
		strcpy_s(name, strlen(per.name) + 1, per.name);
	}
	void Show() const     
	{       
		std::cout << name << std::endl;          
	}
	~Person()
	{
		delete name;  
	}
};

int main(void)
{
	Person* per = new Person("Name"); per->Show();
	Person* per1 = new Person(*per);
	delete per;    
	per1->Show();
	return 0;    
}