Другие языки программирования и технологии

как посчитать количество объектов в классе с помощью static. На С++

как посчитать количество объектов в классе с помощью static. На С++
EL
Eduard Lipovetski
114
#include <iostream>
using namespace std;
class Test {
public:
Test() : data_(0) { ++count_; }
explicit Test(const int data) : data_(data) { ++count_; }
Test(const Test& obj) {
++count_;
this->data_ = obj.data_;
}
Test(Test&& obj) = default;
Test& operator=(const Test& obj) {
if (this != &obj) {
++count_;
this->data_ = obj.data_;
}
return *this;
}
Test& operator=(Test&&) = default;
~Test() { --count_; }
int get()const { return data_; }
void set(const int data) { data_ = data; }
static size_t count() { return count_; }
private:
int data_;
static size_t count_;
};
size_t Test::count_ = 0;
void test(Test&& obj) {
cout << "Data: " << obj.get() << "; Count: " << Test::count() << '\n';
}
int main() {
Test o1;
o1.set(10);
cout << "Data: " << o1.get() << "; Count: " << Test::count() << '\n';
auto o2 = new Test(20);
cout << "Data: " << o1.get() << "; Count: " << Test::count() << '\n';
auto o3 = *o2;
cout << "Data: " << o1.get() << "; Count: " << Test::count() << '\n';
delete o2;
o2 = nullptr;
cout << "Data: " << o1.get() << "; Count: " << Test::count() << '\n';
for (size_t i = 1; i < 10; ++i) test(Test(i));
system("pause");
}
Роман Попов
Роман Попов
50 328
Лучший ответ
Сделай в классе static поле (целочисленное, по умолчанию равное 0), в конструкторе увеличивай его значение на 1, в деструкторе - уменьшай.
Ерлан Омирбаев
Ерлан Омирбаев
24 295
не стоит делать ее статической если считаешь объекты 1 класса))) а так в конструкторе можешь выполнить подсчеты