บทนำ
Inline function ใน C++ เป็นแนวคิดที่ทรงพลังและมักใช้กับคลาส หากฟังก์ชันเป็น inline คอมไพเลอร์จะวางโค้ดของฟังก์ชันนั้นที่ทุกจุดที่เรียกใช้ในขณะคอมไพล์
การเปลี่ยนแปลง inline function อาจต้องคอมไพล์ไคลเอนต์ทั้งหมดใหม่ เพราะคอมไพเลอร์ต้องแทนที่โค้ดอีกครั้ง มิฉะนั้นจะยังคงทำงานแบบเดิม
เพื่อทำให้ฟังก์ชันเป็น inline ให้วางคีย์เวิร์ด inline ก่อนชื่อฟังก์ชัน และนิยามฟังก์ชันก่อนการเรียกใช้ คอมไพเลอร์อาจข้าม inline ได้ถ้าฟังก์ชันยาวกว่าหนึ่งบรรทัด
การนิยามฟังก์ชันในคลาสเป็น inline function แม้ไม่ระบุคีย์เวิร์ด inline ก็ตาม
ตัวอย่างโค้ด
#include <iostream>
using namespace std;
inline int Max(int x, int y) {
return (x > y) ? x : y;
}
int main() {
cout << "Max (20,10): " << Max(20,10) << endl;
cout << "Max (0,200): " << Max(0,200) << endl;
cout << "Max (100,1010): " << Max(100,1010) << endl;
return 0;
}
ผลลัพธ์
Max (20,10): 20 Max (0,200): 200 Max (100,1010): 1010
ประโยชน์ของ Inline Functions
- ไม่มี overhead จากการเรียกฟังก์ชัน
- ประหยัด overhead การ push/pop ตัวแปรบน stack เมื่อเรียกฟังก์ชัน
- ประหยัด overhead การคืนค่าจากฟังก์ชัน
- คอมไพเลอร์อาจทำ optimization เฉพาะบริบทบน body ของ inline function ซึ่งฟังก์ชันทั่วไปไม่ได้
- Inline function ขนาดเล็กอาจมีประโยชน์สำหรับระบบฝังตัว (embedded systems) เพราะ inline ให้โค้ดน้อยกว่าการเรียกฟังก์ชันทั่วไป