728x90
반응형
#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 주소가 동일한지 확인하기

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

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

728x90
반응형

'Language > C & C++' 카테고리의 다른 글

[C]File Input & Ouptut  (0) 2022.10.22
Function practice  (0) 2022.10.19
[C++]Related to Copy Constructor  (0) 2022.10.17
[C++] this pointer  (0) 2022.10.17
[C++] Object Array  (0) 2022.10.17

+ Recent posts