c++

C++ 개인 필기(8) 객체지향 생성자

Voitcon 2024. 1. 31. 18:30

Player p=p1 -> 복사 생성자, const Player& p / 복사와 생성이 한번에 이루어짐

Player p2 -> 기본 생성자

p2=p1 -> 기본 생성자

*인자즐 한개만 받는 기타 생성자를 타입 변환 생성자라고도 한다.

 

float f=(float)num -> 명시적 형변환

float f = num ->암시적 형변환

Player p; / Player(int id)

p=1 -> 타입 변환 생성자로 인해 가능하다. (암시적 형변환)

-> 암시적 부분은 오류 발생 가능

 

객체지향 (OOP , Object Orited Programming)

-상속성

-은닉성

-다형성 

-- 3대 속성--

 

상속: Warrior : public Player

Player 멤버 변수 -> id 4바이트

Warrior 멤버 변수 -> hp,atk 8바이트

상속 재정의 가능 -> if Player::Attack , Warrior::Attack -> 워리어 어택이 실행

부모의 함수를 실행하고 싶으면 Warrior.Player::Move();

생성자와 소멸자 의 순서

Player() 1번, Warrior() 2번

~Warrior 3번 ~Player 4번

Warrior 를 생성하면 Player 생성자 소멸자도 호출된다.

일단 Player가 선처리 영역에서 생성자가 호출되고 그다음 Warrior 생성자가 호출된다. 그다음 Warrior의 소멸자 -> Player 소멸자 호출(후처리 영역)

 

기타 생성자 일 경우

Player(int id){_id=id} / Warrior(int hp) { _hp=hp}

-> Warrior(100) 실행시 선처리 영역에서 Player() 기본 생성자 호출 만약 기본 생성자가 아닌 부모님의 다른 기타 생성자를 호출 하고 싶다면/

Warrior(int hp) : Player(100) -> {Player(int hp)} 이런식으로 생성을 하면 된다.