2015-06-01 15 views
7

static biến cục bộ của hàm inline trong C++ được đảm bảo tồn tại như thể là một biến toàn cầu duy nhất, nếu hiểu biết của tôi là chính xác.Biến cục bộ tĩnh của mẫu `inline` Hàm

Điều tương tự cũng áp dụng nếu chức năng inline là mẫu, nơi trình biên dịch có thể tạo nhiều phiên bản của hàm?

+0

Hiện nay có là cách để có một biến 'inline' toàn cầu trong nhiều thư viện (hoặc một mẫu 'inline 'biến trong nhiều đơn vị dịch). Không có liên kết tiêu chuẩn hóa. –

+0

@ DieterLücking Bạn có nghĩa là đề xuất biến 'inline' được chấp nhận để được đưa vào tiêu chuẩn tiếp theo không? – xiver77

+0

@ xiver77: Không có đầu mối - bạn có thể cung cấp liên kết –

Trả lời

4

Bài viết sau đây sẽ trả lời bạn câu hỏi rất tốt: http://www.geeksforgeeks.org/templates-and-static-variables-in-c/

Tóm lại: Các trình biên dịch tạo ra một biến tĩnh cho mỗi mẫu.

Nếu bạn muốn có biến tương tự cho tất cả các mẫu bạn có lẽ có thể thử một cái gì đó như thế này:

int& hack() 
{ 
    static int i = 10; 
    return i; 
} 

template <typename T> 
void fun(const T& x) 
{ 
    int &i = hack(); 
    cout << ++i; 
    return; 
} 
Các vấn đề liên quan