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. 이전 1 다음 728x90