2024/04/15 2

C++ 정적 함수의 가상화 여부 총정리

1. 정적 함수의 가상화 가능성 C++에서 클래스의 정적 멤버 함수는 가상일 수 없다. 가상 함수는 클래스의 인스턴스에 대한 포인터 또는 참조가 있을 때 호출된다. 정적 함수는 클래스의 인스턴스에 연결되지는 않지만, 클래스에 연결된다. C++에는 포인터 대 클래스가 없으므로 정적 함수를 가상으로 호출할 수 있는 시나리오는 없다. 예를 들어, 아래 프로그램은 컴파일 오류가 나타난다: // CPP Program to demonstrate Virtual member functions // cannot be static #include using namespace std; class Test { public: virtual static void fun() {} }; 출력: prog.cpp:9:29: error:..

C++ 2024.04.15

C++ 순수 가상 함수와 추상 클래스 총정리

1. 순수 가상 함수와 추상 클래스의 개념 기본 클래스에서는 모든 함수의 구현을 알 수 없기 때문에 모든 함수의 구현을 제공할 수 없는 경우가 있다. 이러한 클래스를 추상 클래스라고 한다. 예를 들어 Shape을 기본 클래스라고 하자. Shape에서 함수 draw()의 구현을 제공할 수는 없지만, 파생된 모든 클래스에는 draw()의 구현이 있어야 한다는 것을 알고 있다. 마찬가지로 Animal 클래스에는 move()의 구현이 없지만(모든 동물이 움직인다고 가정할 때), 모든 동물은 움직이는 방법을 알고 있어야 한다. 우리는 추상 클래스의 객체를 만들 수 없다. C++의 순수 가상 함수(또는 추상 함수)는 구현할 수 있는 가상 함수이지만, 파생 클래스에서 해당 함수를 재정의해야 하며, 그렇지 않으면 파생..

C++ 2024.04.15
728x90