Size: a a a

2020 May 18

CC

Cool Cooler in C++ Together 2.0
Evgeniy Pichuzhkin
в контексте классов — делает <что-то> доступным из всех экземпляров класса
в контексте глобальных переменных вот я не знаю
Ааа, я же где-то видел что-то подобное со static'ом в классах, там он помогал считать количество экземпляров.
источник

CC

Cool Cooler in C++ Together 2.0
Только это в Java было, вроде бы.
источник

CC

Cool Cooler in C++ Together 2.0
Ща в C++ затестим...
источник

IL

Ilya L in C++ Together 2.0
Cool Cooler
Ща в C++ затестим...
(а лучше сначала загугли и прочитай что такое статик, а потом тести)
источник

CC

Cool Cooler in C++ Together 2.0
cool@archpony ~/D/e/p/c/names [1]> cat main.cpp
#include <iostream>

using namespace std;

class Car
{
public:
   static int number_of_cars = 0;
   Car()
   {
       number_of_cars++;
   }
   ~Car()
   {
       number_of_cars--;
   }
};

int main()
{
   Car first_car;
   cout << first_car.number_of_cars << endl;
   Car second_car;
   cout << first_car.number_of_cars << endl;
   return 0;
}
cool@archpony ~/D/e/p/c/names> clang++ main.cpp -o main -Wall -Wextra -Weverything
main.cpp:8:16: error: non-const static data member must be initialized out of line
   static int number_of_cars = 0;
              ^                ~
1 error generated.
источник

CC

Cool Cooler in C++ Together 2.0
Хм...
источник

CC

Cool Cooler in C++ Together 2.0
Чёт не получается это сделать
источник

CC

Cool Cooler in C++ Together 2.0
Как сделать?
источник

🦊

🦊fox.cpp in C++ Together 2.0
Cool Cooler
Как сделать?
написано же, out of line
источник

A

Alex Ф-ф-фэils!🌠︙... in C++ Together 2.0
int Car::number_of_cars = 0;
источник

🦊

🦊fox.cpp in C++ Together 2.0
вот
источник

CC

Cool Cooler in C++ Together 2.0
Alex Ф-ф-фэils!🌠︙
int Car::number_of_cars = 0;
Спасибо!
источник

CC

Cool Cooler in C++ Together 2.0
Работает
источник

CC

Cool Cooler in C++ Together 2.0
А когда static полезен?
источник

CC

Cool Cooler in C++ Together 2.0
Я же мог точно так же просто глобальную переменную number_of_cars объявить.
источник

AF

Aidar Fattakhov in C++ Together 2.0
Cool Cooler
cool@archpony ~/D/e/p/c/names [1]> cat main.cpp
#include <iostream>

using namespace std;

class Car
{
public:
   static int number_of_cars = 0;
   Car()
   {
       number_of_cars++;
   }
   ~Car()
   {
       number_of_cars--;
   }
};

int main()
{
   Car first_car;
   cout << first_car.number_of_cars << endl;
   Car second_car;
   cout << first_car.number_of_cars << endl;
   return 0;
}
cool@archpony ~/D/e/p/c/names> clang++ main.cpp -o main -Wall -Wextra -Weverything
main.cpp:8:16: error: non-const static data member must be initialized out of line
   static int number_of_cars = 0;
              ^                ~
1 error generated.
Так это Статик который по умолчанию экстерн
источник

AF

Aidar Fattakhov in C++ Together 2.0
А есть Статик который антоним экстерн
источник

CC

Cool Cooler in C++ Together 2.0
Aidar Fattakhov
А есть Статик который антоним экстерн
А как это?
источник

CC

Cool Cooler in C++ Together 2.0
Что такое экстерн?
источник

AF

Aidar Fattakhov in C++ Together 2.0
Антоним того Статик который антоним экстерн
источник