상속성

CJB_ny·2022년 8월 10일
0

C++ 정리

목록 보기
48/95
post-thumbnail
post-custom-banner

객체 지향

OOP Object Oriented Programming

1. 종류

    1. 상속성
    1. 은닉성
    1. 다형성
class Player
{
public:
	int m_iHp = 100;
	int m_iAttack = 100;
	int m_iDefense = 100;

public:
	Player()
		:
		m_iHp(200),
		m_iAttack(20),
		m_iDefense(5)
	{
	}

};

class Knight : public Player
{
private:
	int m_iInfo = 123;
public:
	
};

int main()
{
	Knight k1;
	k1.m_iHp = 10;
	k1.m_iAttack = 20;
	k1.m_iDefense = 30;

	return 0;
}

메모리 구조를 보면은

Player의 정수 3개 12바이트 + Knight의 정수 변수 1개 4바이트 해서

16바이트가 스택메모리에 올라간다.

이렇게

그러니까 부모의 설계도를 이어받아서 위로 쌓아 올리는 느낌이다.

위에 12바이트, 밑에 4바이트 이렇게 쌓임.

오버라이딩

부모 클래스에 Mpve함수가 있고, 자식 클래스에서 완전똑같은 Move함수를 만들면

자식 클래스객체에서 Move호출 하면 자식의 Move 함수가 호출이 된다.

그렇다고 해서 부모 클래스의 Move함수를 영영 못쓰는 것은 아니고 어딘가에 숨겨놨기 때문에

사용을 할려면

Kngiht k1;

k1.Player::Move();

이렇게 사용이 가능하다.

생성자 소멸자

부모 생성자 -> 자식 생성자

자식 소멸자 -> 부모 소멸지

이런순으로 알고있는데

이것은

생성자와 소멸자의 동작방식? 이지.

실제 호출 순서는

자식 생성자 호출 -> 바로 부모 생성자호출 -> 자식 생성자 호출 순이다.

  • 소멸자의 경우

호처리 영역에 ~Player() 가 낑겨 있다고 보면된다.

"건축물 쌓아 올리는 개념과 비슷하다"

다른 생성자 호출

이렇게 인자를 하나를 받는 생성자를 호출 하고싶다면 명시적으로 인자값을 넣어주어야한다.

profile
https://cjbworld.tistory.com/ <- 이사중
post-custom-banner

0개의 댓글