В вашем примере объявление i
и j
в классе также определяет их.
См. Этот пример:
#include <iostream>
class Foo
{
public:
int a; // Declares and defines a member variable
static int b; // Declare (only) a static member variable
};
int Foo::b; // Define the static member variable
Теперь вы можете получить доступ к a
, объявивобъект типа Foo
, например:
Foo my_foo;
my_foo.a = 10;
std::cout << "a = " << my_foo.a << '\n';
Это немного отличается для b
: потому что static
одинаково для всех экземпляров Foo
:
Foo my_first_foo;
Foo my_second_foo;
Foo::b = 10;
std::cout << "First b = " << my_first_foo.b << '\n';
std::cout << "Second b = " << my_second_foo.b << '\n';
std::cout << "Foo::b = " << Foo::b << '\n';
Для всего вышеперечисленного будет напечатано, что b
равно 10.