C&C++
C++ [생성자] 편
Jero++
2018. 12. 30. 22:31
CPP에서의 클래스는 생성자와 소멸자가 있는데 그중 생성자를 보겠습니다
생성자 개념
생성자는 객체가 생성될 때 자동으로 실행됩니다
만약 우리가 생성자를 지정하지 않았다면 생성자는 자동으로 만들어져요(우리 눈에는 안보이지만)
생성자 형식
생성자는 반환자료형을 명시하지 않고 함수이름을 클래스이름과 동일하게 만들면
생성자가 만들어져요
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | #include<iostream> using namespace std; class A{ public: A(){ cout << "생성자 호출!!!" << endl; } }; int main(){ A a; //실행결과: //생성자 호출!!! } | cs |
이런식으로 생성자를 만들 수 있습니다!
사실 생성자는 우리가 만들지 않아도 프로그램이 실행되면 자동으로 만들어져요
우리눈에 안보일 뿐이지만 실제로는
요런식으로 만들어져있다고 생각하시면 되요
다만 우리가 생성자를 만들게 되면 바로 오버로딩이 됩니다
//링크 (C++ [오버로딩] 편)
실전
보통 생성자는 멤버변수를 초기화하기 위해 많이 사용됩니다
그리고 우리가 객체를 만들 때 여러가지형태로 만들 수 있기 때문에
여러 형태의 데이터를 매개변수로 받을 수 있도록
오버로딩을 통해 여러개의 생성자를 만들 수 있습니다
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | #include<iostream> using namespace std; class Player{ public: int atk; int hp; Player (int atk, int hp){ this->atk = atk; this->hp = hp; } Player (int atk){ this->atk = atk; this->hp = 100; } }; int main(){ Player p1(45, 90); Player p2(65); cout << p1.atk << "\t" << p1.hp << endl; //45 90 cout << p2.atk << "\t" << p2.hp << endl; //65 100 } | cs |
이런식으로 간단하게 캐릭터 클래스를 만들 수 있겠습니다
그리고 또한가지
C에는 없던 변수 초기화방법을 사용할 수 있습니다
C++만의 변수초기화 방법을 생성자에서 사용이 가능합니다
//링크 (C++ [여러가지 변수 초기화방법] 편)
1 2 3 4 5 6 7 8 9 10 11 | class Player{ public: int atk; int hp; Player (int atk, int hp) atk(atk), hp(hp){ } }; | cs |