C ++中的静态变量声明和定义

时间:2014-10-07 16:59:55

标签: c++ static

我有一个示例代码,如下所示:

 class myclass
{
public:
    static int j;
    myclass(){};
    ~myclass(){};
};

int main(int argc, char** argv) {
    myclass obj;
    return EXIT_SUCCESS;
}

现在我在myclass中声明了一个静态int,虽然我没有定义它,但在我开始使用静态变量之前,编译器并没有给我任何错误。这是为什么?

2 个答案:

答案 0 :(得分:2)

因为这些是链接器错误,而不是编译器错误。在使用未定义的符号之前,链接器错误永远不会出现。

答案 1 :(得分:2)

  

"在我开始使用静态变量之前,编译器没有给我任何错误。为什么?"

因为在此之前(当您开始使用它时)它不需要与您的代码链接。链接器忽略/剥离未使用的代码。