Какая разница между статической членной переменной класса и «свободной» переменной, определенной в «теле» класса? Я имею в виду, могу ли я использовать второй вместо первого, чтобы выпустить заголовок класса?Удаление статического элемента из заголовка
// 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', а затем использовать переменную (и * modify *). – Nawaz
глобальные переменные являются плохими по причине столкновения пространств имен, конечно, я могу помещать их в пространство имен, и это просто простой пример, и это не вопрос вопроса. –