
С++, работа с классами 1. Создать класс согласно варианту. 2. Добавить в класс поля, в том числе,
указанные в варианте. 3. Добавить в класс конструктор по умолчанию (без параметров), конструктор копирования, конструктор для инициализации всех полей, возможно конструкторы преобразования, если необходимо – деструктор. 4. Добавить методы класса, в том числе согласно варианту. 5. Скрыть (защитить) все поля и методы, кроме необходимых для работы. 6. Продемонстрировать работу класса. сам вариант: класс- Building поля- char* address; int storeyCount; адрес- addStoreys(int count);//добавить этажей quarantine(); //закрыть на карантин

Ответы на вопрос

#include <iostream>
using namespace std;
class Building {
private:
string adress_m;
int storeyCount_m;
bool quarantine_m;
public:
Building(string adress = "", int count = -1) {
adress_m = adress;
storeyCount_m = count;
}
void addStoreys(int count) {
storeyCount_m += count;
}
void quarantineOn() {
cout << "Quarantine: on";
cout << endl;
quarantine_m = 1;
}
void quarantineOff() {
cout << "Quarantine: off";
cout << endl;
quarantine_m = 0;
}
void quarantineCheck() {
cout << "Quarantine: ";
if(quarantine_m) {
cout << "on";
cout << endl;
} else {
cout << "off";
cout << endl;
}
}
string getAdress() {
return adress_m;
}
int getStorey() {
return storeyCount_m;
}
};
int main() {
Building build("dirt house", 1);
cout << build.getAdress() << " " << build.getStorey() << " storeys" << " " << endl;
build.quarantineCheck();
build.quarantineOn();
build.addStoreys(2);
cout << build.getAdress() << " " << build.getStorey() << " storeys" << " " << endl;
}



Ниже представлен пример класса Building на языке C++ с реализацией указанных методов и полей:
cpp#include <iostream>
#include <cstring>
class Building {
private:
char* address;
int storeyCount;
public:
Building() : address(nullptr), storeyCount(0) {}
Building(const char* addr, int storeys) : address(nullptr), storeyCount(storeys) {
setAddress(addr);
}
Building(const Building& other) : address(nullptr), storeyCount(other.storeyCount) {
setAddress(other.address);
}
~Building() {
delete[] address;
}
void addStoreys(int count) {
if (count > 0) {
storeyCount += count;
std::cout << "Added " << count << " storeys to the building." << std::endl;
}
}
void quarantine() {
std::cout << "The building is now under quarantine." << std::endl;
}
const char* getAddress() const {
return address;
}
int getStoreyCount() const {
return storeyCount;
}
private:
void setAddress(const char* addr) {
if (addr != nullptr) {
delete[] address;
address = new char[std::strlen(addr) + 1];
std::strcpy(address, addr);
}
}
};
int main() {
Building building1("123 Main Street", 5);
std::cout << "Address: " << building1.getAddress() << std::endl;
std::cout << "Storey count: " << building1.getStoreyCount() << std::endl;
Building building2(building1);
std::cout << "Address (copy): " << building2.getAddress() << std::endl;
std::cout << "Storey count (copy): " << building2.getStoreyCount() << std::endl;
building2.addStoreys(3);
std::cout << "Storey count (after adding): " << building2.getStoreyCount() << std::endl;
building2.quarantine();
return 0;
}
В данном примере класс Building
имеет приватные поля address
(адрес здания) и storeyCount
(количество этажей).
Класс содержит публичные методы:
- Конструктор по умолчанию
Building()
, который инициализирует поля значениями по умолчанию. - Конструктор для инициализации полей
Building(const char* addr, int storeys)
, который принимает адрес здания и количество этажей в качестве аргументов. - Конструктор копирования
Building(const Building& other)
, который создает копию существующего объекта класса. - Деструктор
~Building()
, который освобождает память, выделенную для поляaddress
. - Метод
addStoreys(int count)
, который добавляет указанное количество этажей к текущему количеству этажей здания. - Метод
quarantine()
, который выводит сообщение о том, что здание находится на карантине. - Методы
getAddress()
иgetStoreyCount()
, которые возвраща


Похожие вопросы
Топ вопросов за вчера в категории Информатика







Последние заданные вопросы в категории Информатика
-
Математика
-
Литература
-
Алгебра
-
Русский язык
-
Геометрия
-
Английский язык
-
Химия
-
Физика
-
Биология
-
Другие предметы
-
История
-
Обществознание
-
Окружающий мир
-
География
-
Українська мова
-
Информатика
-
Українська література
-
Қазақ тiлi
-
Экономика
-
Музыка
-
Право
-
Беларуская мова
-
Французский язык
-
Немецкий язык
-
МХК
-
ОБЖ
-
Психология
-
Физкультура и спорт
-
Астрономия
-
Кыргыз тили
-
Оʻzbek tili