Добавил:
Рад, если кому-то помог Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
0
Добавлен:
01.11.2025
Размер:
2.19 Кб
Скачать
#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