본문 바로가기
728x90
CPP 가상 함수(Virtual Function) 가상 함수(virtual function)란? 부모 클래스(기본 클래스)에서 선언되어 자식 클래스(파생 클래스)에 의해 재정의되는 멤버 함수 가상 함수는 기본 클래스 내에 virtual 키워드로 함수를 선언 가상 함수를 왜 사용할까? 가상 함수를 사용하지 않으면 오버라이딩 시에 문제가 있을 수 있음! 자식 클래스에서 포인터 변수로 객체에 접근할 때 의도치 않게 동작할 수 있다. cpp에서는 컴파일러는 포인터 변수가 가리키고 있는 변수의 타입을 기준으로 함수를 호출하지 않는다. 포인터 타입을 기준으로 함수를 호출! 아래 코드를 보자. class A { public: void check() { std::cout 2022. 1. 18.
CPP friend 클래스와 함수 friend 클래스란? 다른 클래스의 private 및 protected 멤버에 접근할 수 있게 해주는 키워드! friend class A; 클래스 내에서 friend로 다른 클래스를 등록해놓으면, private와 proteced로 접근하지 못하게 만든 변수 또는 함수에 접근 가능! 아래 예제 코드를 보자 class A { private: int num; friend class B; }; class B { void set_A_num(A &a, int n) { a.num = n; } }; 클래스 B의 set_A_num함수에서 A의 클래스의 num에 직접 접근해서 값을 변경했다. 원래 A 클래스의 num은 private이라 다른 클래스에서 직접 접근하지 못한다. 그러나 A클래스에서 friend 키워드를 통해.. 2022. 1. 18.
728x90