인라인 함수는 함수 본문을 호출 지점에 포함하여 성능과 코드 크기를 향상시키지만 가독성이 낮습니다. 가상 함수는 다형성을 통해 하위 클래스에 의해 재정의된 함수를 호출하여 유연성을 향상시키지만 런타임 오버헤드가 더 높습니다.
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
인라인 함수
가상 함수
호출 메커니즘
함수 본문 삽입
간접 호출
ㅋㅋㅋ
다형성
지원되지 않음
지원
실제 사례:
인라인 함수를 사용하여 합계와 같은 간단한 수학 연산을 구현할 수 있습니다.
inline int sum(int a, int b) {
return a + b;
}
int main() {
std::cout << sum(1, 2) << std::endl; // 输出:3
}
로그인 후 복사
가상 함수를 사용하여 그래픽 그리기 인터페이스를 구현할 수 있습니다.
class Shape {
public:
virtual void draw() = 0;
};
class Circle : public Shape {
public:
virtual void draw() override {
std::cout << "Drawing a circle" << std::endl;
}
};
int main() {
Shape* shape = new Circle();
shape->draw(); // 输出:Drawing a circle
}
로그인 후 복사
위 내용은 C++ 인라인 함수와 가상 함수의 유사점과 차이점의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!