クラスの静的メンバー変数とクラスの "body"で定義された "空き"変数の違いは何ですか?私は、最初のクラスの代わりに2番目のクラスを使用してクラスのヘッダーを排出することはできますか?ヘッダーから静的メンバーを削除する
// b.h
class B
{
public:
B(int j);
void print();
private:
static int is;
};
//b.cpp
#include <iostream>
int i = 0;
int B::is = 0;
B::B(int j)
{
i = j;
is = j;
}
void B::print(){
std::cout << i << " " << is << " " << std::endl;
}
//main.cpp
int main() {
B b1(1);
b1.print();
B b2(2);
b2.print();
b1.print();
return 0;
}
出力:あなたのケースで
1 1
2 2
2 2
ファイルスコープがb.cppで、誰が変更できるのですか? –
@DmitryKachko:他のファイルから、グローバル変数を使用することができます。あなたのケースでは、 '外部 'リンケージがあります。他のファイルでは、 'extern int i'として簡単に宣言してから、変数を使用(および変更*)することができます。 – Nawaz
グローバル変数は名前空間の衝突のために悪いですが、私は名前空間に入れることができます。それは単なる単純な例であり、問題の問題ではありません。 –