爲什麼在一個靜態變量已經被重新初始化爲文件中的一個全球性的? 否則,它會給出鏈接錯誤。它背後的理論是什麼?我知道靜態變量將位於數據段中。爲什麼類中的靜態變量給出鏈接錯誤?
my_class.h
class my_class
{
public:
static int m_fid;
void get_fid();
};
my_class.cpp:
#include <iostream>
using namespace std;
int main()
{
my_class t;
/**this gives a linking error */
my_class::m_fid = 0;
return 0;
}
什麼認爲其範圍應該是什麼? – Beta
範圍在DS中。當我們實例化時,對象位於堆棧或堆中。堆棧成員不能是堆棧或堆的成員部分。因此,它永遠不會被實例化。但是,當我們實例化類時,C++不夠聰明,無法將它放入DS中。 –