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 |