Другие языки программирования и технологии
как посчитать количество объектов в классе с помощью static. На С++
как посчитать количество объектов в классе с помощью static. На С++
#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");
}
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");
}
Сделай в классе static поле (целочисленное, по умолчанию равное 0), в конструкторе увеличивай его значение на 1, в деструкторе - уменьшай.
не стоит делать ее статической если считаешь объекты 1 класса))) а так в конструкторе можешь выполнить подсчеты
Похожие вопросы
- Программирование ассемблер. Дан массив из 8 байт. Посчитать количество байт, в которых число нулей и единиц одинаковое
- Как посчитать количество гласных идущих в строке подряд?
- Объект и класс это синонимы ?
- Как изменить свойство всех объектов одного класса в C#?
- Написать программу которая определяет количество учеников в классе,чей рост превышает средний(Turbo Pascal)
- В чем различие ключевых слов public и static в java? И объясните конкретно , что такое экземпляр класса.
- Экземпляра класса, объекты
- С++, объект класса, экземпляр класса, какой тип переменной хранит экземпляр класса? (экземпляр это что? Word, lpstr..?)
- Классы и объекты в с++
- Запись объекта класса в файл и его чтение