Trong C++, từ khóa inline dùng cho hàm. Từ C++17, khái niệm biến inline được giới thiệu.
Biến inline cho phép định nghĩa ở nhiều đơn vị dịch (translation units) và tuân theo quy tắc One Definition Rule (ODR). Nếu được định nghĩa nhiều lần, trình biên dịch sẽ gộp chúng thành một đối tượng duy nhất trong chương trình cuối cùng.
Trước C++17, không thể khởi tạo biến thành viên static trực tiếp trong class, buộc phải định nghĩa ở ngoài.
Ví dụ trước C++17
#include <iostream>
using namespace std;
class MyClass {
public:
MyClass() { ++num; }
~MyClass() { --num; }
static int num;
};
int MyClass::num = 10; // định nghĩa ngoài class
int main() {
cout << "Giá trị static: " << MyClass::num;
}Kết quả
Giá trị static: 10
Ví dụ C++17 với inline static
#include <iostream>
using namespace std;
class MyClass {
public:
MyClass() { ++num; }
~MyClass() { --num; }
inline static int num = 10; // khởi tạo ngay trong class
};
int main() {
cout << "Giá trị static: " << MyClass::num;
}Kết quả
Giá trị static: 10