Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> C++

Hàm ảo inline (inline virtual function) trong C++


Hàm ảo (virtual) được phân giải tại runtime (late binding). Hàm inline được thay thế mã tại compile-time. Khi gọi hàm ảo qua con trỏ/tham chiếu cơ sở → không thể inline (không biết kiểu động lúc biên dịch). Khi gọi qua đối tượng cụ thể (không qua con trỏ/tham chiếu) → có thể inline vì trình biên dịch biết kiểu chính xác.

Ví dụ

#include <iostream>
using namespace std;

class Base { public: virtual void f() { cout << "Base\n"; } };
class Derived : public Base { public: void f() override { cout << "Derived\n"; } };

int main() {
    Base b; Derived d;
    Base *ptr = &d;
    b.f();      // Có thể inline (gọi qua object Base)
    ptr->f();   // KHÔNG inline (gọi qua pointer, late binding)
    return 0;
}

Kết quả

Base
Derived