Computer >> Máy Tính >  >> Lập trình >> C ++

Các biến nội tuyến hoạt động như thế nào trong C ++ / C ++ 17?

Trong C ++, chúng ta có thể sử dụng từ khóa inline cho các hàm. Trong phiên bản C ++ 17, khái niệm biến nội tuyến đã xuất hiện.

Biến nội tuyến được phép xác định trong nhiều đơn vị dịch. Nó cũng tuân theo một quy tắc định nghĩa. Nếu điều này được xác định nhiều lần, trình biên dịch sẽ hợp nhất tất cả chúng thành một đối tượng duy nhất trong chương trình cuối cùng.

Trong C ++ (trước phiên bản C ++ 17), chúng ta không thể khởi tạo giá trị của các biến tĩnh trực tiếp trong lớp. Chúng ta phải xác định chúng bên ngoài lớp.

Mã mẫu

#include<iostream>
using namespace std;
class MyClass {
   public:
      MyClass() {
         ++num;
      }
      ~MyClass() {
         --num;
      }
      static int num;
};
int MyClass::num = 10;
int main() {
   cout<<"The static value is: " << MyClass::num;
}

Đầu ra

The static value is: 10
In C++17, we can initialize the static variables inside the class using inline variables.

Mã mẫu

#include<iostream>
using namespace std;
class MyClass {
   public:
      MyClass() {
         ++num;
      }
      ~MyClass() {
         --num;
      }
      inline static int num = 10;
};
int main() {
   cout<<"The static value is: " << MyClass::num;
}

Đầu ra

The static value is: 10