본문 바로가기

c++ 멤버4

C++ [가상함수] ▣ 기본클래스, 파생클래스를 선언하고 각각 멤버함수를 선언합니다. 멤버함수의 이름은 동일하게 선언합니다. 그리고 메인함수에서 GameManager 객체의 포인터, Player 객체의 포인터를 각각 정의하고 위에 코드처럼 GameMaanger클래스의 주소로 접근하여 멤버함수를 호출하는 코드, Player클래스의 주소를 pGameManager 함수에 대입하여 멤버함수를 호출하는 코드를 작성합니다. ▣ 디버그를 해보면 둘 다 GameManager 클래스의 멤버함수가 호출되는 걸 확인할 수 있습니다. ▣ 그 이유는 정적바인딩으로 컴파일할 때 호출될 함수의 주소가 이미 결정해 버렸기 때문에 pGameManager = pPlayer; 이렇게 코드를 작성하더라도 부모의 함수가 호출됩니다. ▣ 이럴 때 가상함수(Vir.. 2023. 2. 22.
C++ [오버라이드] ▣ 먼저 GameManager 클래스를 선언하고 GameManager에 멤버변수, 함수를 지정합니다. Player라는 파생 클래스도 선언하고 멤버변수를 선언합니다. ▣ 그리고 Player의 객체를 p로 정의하고 p에서 Show() 멤버함수를 호출합니다. 그럼 기본클래스인 GameManager에 멤버함수 Show()가 호출됩니다. ▣ 코드를 추가해서 Player 파생클래스에 멤버함수로 기본클래스에 있던 멤버함수랑 동일한 이름으로 Show()라는 멤버함수를 선언합니다. 그리고 다시 p.show() 함수를 호출하면 위에 이미지처럼 기본클래스의 멤버함수가 아닌 파생클래스의 멤버함수가 호출됩니다. 이걸 오버라이드라고 합니다. ▣ 다시 정리하면 파생클래스가 기본클래스 함수를 대신 호출되는 걸 오버라이드라고 합니다. 2023. 2. 22.
C++ 16장 [static 멤버 변수, 함수] ▣ 안녕하세요. 이번장에서는 static 멤버에 대해 공부해보도록 하겠습니다. static을 공부할 때는 메모리 영역과 정적, 동적 이런 이야기를 해야 하지만, 이번장에서는 static에 사용 방법과 용도를 간단하게 공부해보겠습니다. ▣ static 멤버 변수와 멤버 함수를 선언하는 건 간단합니다. 선언할 멤버 변수 자료형 앞에 static 키워드를 붙어주시면 됩니다. 여기서 중요한건 static 멤버 변수는 모든 객체를 공유합니다. 그래서 반드시 int Calculator::number = 500; 코드에서처럼 전역 범위에서 정의 및 초기값을 지정해야 합니다. ▣ 메인 함수에서 객체를 각각 선언해주시고 선언한 객체로 static 멤버 변수를 접근하여 static 변수 주소를 출력하는 코드와 sum() .. 2022. 11. 16.
C++ 4장 [클래스2] ▣ 안녕하세요. 이번장에서는 클래스에 생성자에 대해 공부해보도록 하겠습니다. 생성자는 클래스가 객체로 생성될 때(정의할 때) 자동으로 실행되는 함수(생성자)라고 생각하시면 됩니다. 생성자는 오직 한 번만 실행합니다. 생성자 함수의 이름은 클래스 이름과 동일하게 작성해야 합니다. 생성자 함수의 반환형(리턴 타입)을 선언하지 않습니다. 단 함수에 매개변수는 넣을 수 있습니다. ▣ 생성자를 쓰는 이유는 객체가 생성될 때 필요한 초기화 작업을 하기 위함입니다. 이제 생성자를 코드로 공부해보겠습니다. ▣ 생성자 함수는 Calculator::Calculator()처럼 클래스와 동일하게 이름을 지정해주면 됩니다. 여기서 중요한 건 일반 함수와 다르게 반환형이 없는 점 주의해주세요. 코드를 다 작성하셨다면 이제 메인 .. 2022. 10. 6.