Добавил:
vvrstcnho
Рад, если кому-то помог
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Лабораторные работы С++ (для ИВТ) / Готовые лабы С++ / Лаба2 / Laba 2 (17)
.cpp#include <iostream>
#include <windows.h>
using namespace std;
// Класс с конструктором по умолчанию
class DefaultConstructor {
private:
int value;
public:
// Конструктор по умолчанию
DefaultConstructor() : value(0) {
cout << "Вызван конструктор по умолчанию" << endl;
}
// Параметризованный конструктор
DefaultConstructor(int v) : value(v) {
cout << "Вызван параметризованный конструктор" << endl;
}
int getValue() { return value; }
};
// Ситуации работы конструктора (не копирования):
// 1. Создание объекта без параметров
// 2. Создание объекта с параметрами
// Условия, когда конструктор копирования не создается по умолчанию:
// - Если определен любой другой конструктор (компилятор не генерирует конструктор по умолчанию)
// - Если класс содержит ссылки или константные члены
class NoDefaultCopy {
int& ref; // ссылка
const int constValue; // константа
public:
NoDefaultCopy(int& r, int cv) : ref(r), constValue(cv) {
cout << "Создан NoDefaultCopy объект" << endl;
}
// Конструктор копирования должен быть определен явно
};
int main() {
SetConsoleOutputCP(65001);
cout << "=== Задание 2.17 - Конструкторы ===" << endl;
cout << "\nСитуации работы конструктора (не копирования):" << endl;
cout << "1. Создание объекта без параметров:" << endl;
DefaultConstructor dc1;
cout << "2. Создание объекта с параметрами:" << endl;
DefaultConstructor dc2(10);
cout << "\nУсловия, когда конструктор копирования не создается по умолчанию:" << endl;
cout << "- Если определен любой другой конструктор" << endl;
cout << "- Если класс содержит ссылки или константные члены" << endl;
int x = 5;
cout << "\nПример класса с ссылками и константами:" << endl;
NoDefaultCopy ndc(x, 10);
cout << "Этот класс требует явного определения конструктора копирования" << endl;
return 0;
}
Соседние файлы в папке Лаба2
