C++ 인라인 함수와 가상 함수의 유사점과 차이점
인라인 함수는 함수 본문을 호출 지점에 포함하여 성능과 코드 크기를 향상시키지만 가독성이 낮습니다. 가상 함수는 다형성을 통해 하위 클래스에 의해 재정의된 함수를 호출하여 유연성을 향상시키지만 런타임 오버헤드가 더 높습니다.
C++에서 인라인 함수와 가상 함수의 유사점과 차이점
인라인 함수
인라인 함수는 호출할 때 함수 호출을 실행하는 대신 컴파일러가 호출 지점에 함수 본문을 삽입하는 함수입니다. 프로세스.
이점:
- 성능 향상: 오버헤드 호출을 방지합니다.
- 코드 크기 줄이기: 함수 본문은 여러 호출 지점에서 반복적으로 나타나지 않습니다.
단점:
- 컴파일 시간 증가: 각 호출 지점에 대해 함수 본문을 컴파일해야 합니다.
- 코드 가독성 감소: 함수 본문이 코드 베이스 전체에 분산되어 있습니다.
구문:
inline int sum(int a, int b) { return a + b; }
가상 함수
가상 함수는 상속 메커니즘을 통해 다형성을 달성하는 함수입니다. 상위 클래스 객체의 가상 함수가 호출되면 호출되는 실제 함수는 객체의 동적 유형에 따라 결정됩니다.
이점:
- 다형성 달성: 하위 클래스는 상위 클래스의 가상 함수를 재정의할 수 있습니다.
- 코드 확장성과 유연성을 향상시킵니다.
단점:
- 런타임 오버헤드: 가상 함수 테이블과 간접 호출을 유지해야 합니다.
- 코드 복잡성 증가:
virtual
和override
키워드를 사용해야 합니다.
문법:
class Base { public: virtual void print() { std::cout << "Base" << std::endl; } }; class Derived : public Base { public: virtual void print() override { std::cout << "Derived" << std::endl; } };
유사점과 차이점 비교:
Features | 인라인 함수 | 가상 함수 |
---|---|---|
호출 메커니즘 | 함수 본문 삽입 | 간접 호출 |
지원되지 않음 | 지원 | |
실제 사례: | 인라인 함수를 사용하여 합계와 같은 간단한 수학 연산을 구현할 수 있습니다. | |