静的変数は、クラスのどのインスタンスとも異なるメモリ部分に保存されます。これは、どのクラスのインスタンスのPARTでもないためです。
関数tが呼び出されないため、以下のコードがコンパイルされます。 tは
class TT
{
private:
static int i;
public:
void t()
{
i=0;
}
};
int main(int argc, char *argv[])
{
qWarning() << "hi";
TT * t = new TT();
t->t();
return 0;
}
と呼ばれているので、
class TT
{
private:
static int i;
public:
void t()
{
i=0;
}
};
int main(int argc, char *argv[])
{
qWarning() << "hi";
TT * t = new TT();
//t->t();
return 0;
}
しかし、このコードは、あなたがあなたが(そのことについて及びC)C++で使用していない未定義の参照を持つことが許され、complieしません。何らかの理由で、私は確信していますが、コンパイラは、このコードは私が参照するまで、それを参照していない上記のものは、参照していると思うようだ(任意のアイデア理由)?
class TT
{
private:
static int i;
public:
void t();
};
//int TT::i = 0;
void TT::t(){
i=0;
}
機能たとえば、定義された静的で:TT `へ
class TT
{
private:
static int i;
public:
void t();
};
int TT::i = 0;
void TT::t(){
i=0;
}
+1私があなたがそれを釘付けにしたことを認識したため、私の応答を削除しました。 – Lou
それは、ありがとう – user956159