Добавил:
vvrstcnho
Рад, если кому-то помог
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Лабораторные работы С++ (для ИВТ) / Готовые лабы С++ / Лаба2 / Laba 2 (11)
.cpp#include <iostream>
#include <cstring>
#include <windows.h>
using namespace std;
class cat {
private:
double weight;
char name[100];
public:
explicit cat(const char* n, double w = 12.0) : weight(w) {
strcpy(name, n);
}
cat(double w) : weight(w) {
strcpy(name, "cat");
}
// Добавляем геттер для доступа к weight
double getWeight() const { return weight; }
};
int f(const cat c1, const cat c2, const cat& c3, const cat& c4) {
// Используем геттеры вместо прямого доступа к приватным полям
return c1.getWeight() + c2.getWeight() + c3.getWeight() + c4.getWeight();
}
int main() {
SetConsoleOutputCP(65001);
cout << "=== Задание 2.11 ===" << endl;
cout << "Демонстрация работы с классом cat" << endl;
// Исправленный вызов - создаем объекты явно
cat c1("Murzik", 22.0);
cat c2("Kuzya", 10.2);
cat c3(15.5);
cat c4(8.3);
int totalWeight = f(c1, c2, c3, c4);
cout << "Суммарный вес всех котов: " << totalWeight << endl;
cout << "Конструкторы и деструкторы, которые будут вызваны:" << endl;
cout << "1. Конструктор c1 (с параметрами)" << endl;
cout << "2. Конструктор c2 (с параметрами)" << endl;
cout << "3. Конструктор c3 (с одним параметром)" << endl;
cout << "4. Конструктор c4 (с одним параметром)" << endl;
cout << "5. Конструктор копирования для c1 при передаче в функцию" << endl;
cout << "6. Конструктор копирования для c2 при передаче в функцию" << endl;
cout << "7. Деструкторы для всех временных объектов" << endl;
cout << "8. Деструкторы для c4, c3, c2, c1 при выходе из main" << endl;
return 0;
}
Соседние файлы в папке Лаба2
