[C++] 23. 복사생성자 (참조자의 개념)
2022. 6. 7. 17:05ㆍ코딩 1막 <C++개념편>
728x90
앞서 생성자와 소멸자를 공부하다가 생성자는 기본생성자가 있고 새로운 개념이 등장했다.
바로 '복사 생성자'라는 것인데, 복사 생성자(call by reference)란
자신과 같은 클래스 타입의 다른 객체에 대한 참조(reference)를 인수로 전달받아, 그 참조를 가지고 자신을 초기화하는 방법입니다.
복사 생성자는 새롭게 생성되는 객체가 원본 객체와 같으면서도, 완전한 독립성을 가지게 해줍니다.
*참조자(call by reference)의 형태
: 데이터타입& 변수명
#include <iostream>
using namespace std;
struct Monster
{
string name;
float hp;
float damage;
// 기본 생성자 만들기
Monster()
{
cout << "기본 생성자 호출" << endl;
name = "초기화";
hp = 0;
damage = 0;
}
// 복사 생성자 만들기
Monster(Monster& target)
{
cout << "복사 생성자 호출" << endl;
name = "복사";
}
// 오버로딩된 형태의 생성자 만들기
Monster(string _name, float _hp, float _damage)
{
SetInfo(_name, _hp, _damage);
cout << name << " 생성자 호출" << endl;
}
// 소멸자 만들기
~Monster()
{
cout << name << " 소멸자 호출" << endl;
}
void PrintInfo()
{
cout << name << endl;
cout << hp << endl;
cout << damage << endl;
}
void SetInfo(string _name, float _hp, float _damage)
{
name = _name;
hp = _hp;
damage = _damage;
}
};
// 참조자(call by reference)
// 데이터타입& 변수명
void ChangeValue(int& temp, int value)
{
temp = value;
}
void main()
{
int num = 10;
ChangeValue(num, 30);
cout << num << endl;
}
728x90
'코딩 1막 <C++개념편>' 카테고리의 다른 글
[C++] 25. 동적배열이란 (0) | 2022.06.07 |
---|---|
[C++] 24. 동적할당이란 (0) | 2022.06.07 |
[C++] 22. 생성자와 소멸자 (0) | 2022.06.07 |
[C++] 21. 랜덤 (0) | 2022.06.02 |
[C++] 20. 입력 (0) | 2022.06.02 |