Language/C & C++

[Instant]Homework

Rogue 2022. 10. 18. 15:48
반응형
#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
#include <cstring>
using namespace std;

class Person
{
private:
	char* name;
	int age;
public:
	Person(const char* name, int age)
	{
		this->name = new char[strlen(name) + 1];
		strcpy(this->name, name);
		this->age = age;
	}
	Person(const Person& copy) : age(copy.age)
	{
		this->name = new char[strlen(copy.name) + 1];
		strcpy(this->name, copy.name);
		//this->age = age;
	}
	void ShowInfo() const
	{
		cout << "Name: " << name << endl;
		cout << "Age: " << age << endl;
		cout << "Address(&): " << this->name << endl;
		cout << "Address(this): " << this << endl;
	}
	~Person()
	{
		delete[]name;
		cout << "Called Destructor." << endl;
	}
};

int main(void)
{
	Person man1("Jake", 30);
	Person man2(man1);

	man1.ShowInfo();
	man2.ShowInfo();
	
	return 0;
}

man1과 man2 의 name 멤버변수가 가리키는 heap 주소가 동일한지 확인하기

현재까지는 각자 객체의 주소는 계속 다르게 나옴.

깊은 복사의 범위가 객체대 객체인지 멤버대 멤버가 가리키는 것인지 확인이 필요

반응형