Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.83/6: Рейтинг темы: голосов - 6, средняя оценка - 4.83
1 / 1 / 1
Регистрация: 15.05.2011
Сообщений: 78
1

Классы: конструктор копий

22.02.2012, 13:18. Показов 1169. Ответов 3
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Создать конструктор копий и оператор присваивания для класса компьютер и члена класса марка

Есть некоторые наброски , посмотрите правильно ли я сделал:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
//Ñîçäàòü êîíñòðóêòîð êîïèé è îïåðàòîð ïðèñâàèâàíèÿ äëÿ êëàññà êîìïüþòåð è ÷ëåíà êëàññà ìàðêà.
#include <iostream>
using std::cout;
 
class computer
{ 
        int mark;
public:
        computer(int value): mark(value) {} 
 
void setFrequency (int new_value) 
{ 
        mark = new_value;
}
 
computer& operator = (computer& temp)
{
        if (this == &temp) 
                return *this;
        this->mark = temp.mark;
}
 
friend std::ostream & operator << ( std::ostream& cout, computer& temp)
{
        cout<<temp.mark;
        return cout;
}
 
};
 
int main()
{
        computer a (10);
        computer b = a;
        cout<<b<<"\n";
        system ("pause");
        return EXIT_SUCCESS;
}
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
22.02.2012, 13:18
Ответы с готовыми решениями:

Конструктор копий
Добрый день! Пытаюсь разобраться с конструктором копий, а именно: когда его использовать и как реализовать. С первым, вроде как,...

Конструктор копий
Можно ли вызвать в конструкторе копий, конструктор, если объекту нечего передавать? Класс - абстрактный. В конструкторе идет подсчет...

Конструктор копий
Добрый день, изучая работу со списками и классы, дошел до такой проблемы: Нужно было создать односвязный список и продлить его же...

3
40 / 40 / 7
Регистрация: 21.02.2012
Сообщений: 95
22.02.2012, 14:44 2
OKS_by_V, ты все сделал правильно единственное что можно поменять это
C++
1
explicit computer(int value);
ну и еще

C++
1
2
3
4
5
6
7
computer& operator = (computer& temp)
{
        if (this == &temp) 
                return *this;
        this->mark = temp.mark;
return *this; //надо все таки вернуть значение 
}
Объясню почему.

если где то написать
C++
1
computer b = 10;//ну бывает сделал ошибку в программе и не заметил
то это вызов превратится в

C++
1
computer b = computer(10);// этот временный объект будет потом уничтожен.
т.е. вызовется конструктор computer(int value); создастся временный объект computer(10);

explicit - не даст сделать этого неявного приведения
и ты сможешь обнаружить ошибку тут computer b = 10;

так что ты правильно написал оператор присваивания, исправь просто констуктор создания


а это конструктор копирования
C++
1
2
3
4
5
6
computer(const computer& temp)
{
        if (this == &temp) 
                return;
        this->mark = temp.mark;
}
1
1 / 1 / 1
Регистрация: 15.05.2011
Сообщений: 78
23.02.2012, 18:41  [ТС] 3
Спасибо ....

а как и на что изменить можешь сбросить код??
0
40 / 40 / 7
Регистрация: 21.02.2012
Сообщений: 95
23.02.2012, 22:40 4
вот код целиком, твой + вставки. проверяй
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
#include <iostream>
using std::cout;
 
class computer
{ 
        int mark;
public:
       explicit computer(int value): mark(value) {} //explicit добавлено
 
 
computer(const computer& temp) //конструктор копирования
{
        if (this == &temp) 
                return;
        this->mark = temp.mark;
}
 
void setFrequency (int new_value) 
{ 
        mark = new_value;
}
 
computer& operator = (const computer& temp)
{
        if (this == &temp) 
                return *this;
        this->mark = temp.mark;
return *this; //надо все таки вернуть значение 
}
 
friend std::ostream & operator << ( std::ostream& cout, computer& temp)
{
        cout<<temp.mark;
        return cout;
}
 
};
 
int main()
{
        computer a (10);
        computer b = a;
        cout<<b<<"\n";
        system ("pause");
        return EXIT_SUCCESS;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
23.02.2012, 22:40
Помогаю со студенческими работами здесь

Конструктор копий по умолчанию.
Почему, когда в vc++ vdfsadsad Добавлено через 46 секунд Почему если идёшь по коду с заходом в функцию не отображается вызов...

Что такое конструктор копий?
Объясните, пожалуйста, на максимально простом языке, чем отличается конструктор от конструктора копий? Может это и одно и то же, хотя...

Конструктор копий. Оператор присваивания
В классе есть массив char (не динамический) размером 40 байт. Вопрос1: нужно ли для такого класса определять конструктор копий или...

С++ Конструктор копий. Функция, работающая с объектами
Конструктор копий должен работать в след. ситуациях: 1) В объявлении объекта, когда один объект используется для инициализации другого. ...

Перегрузка оператора ++ , деструктор и конструктор копий
Привет всем! В продолжение Этой темы появились новые вопросы и непонятки. Буду признателен за советы и разъяснения ;) Начну с...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему

Редактор формул (кликните на картинку в правом углу, чтобы закрыть)
Новые блоги и статьи
Java Record или Kotlin Data Class: что лучше для неизменяемых данных
Wired 04.03.2025
Java Record и Kotlin Data Class - средства для работы с неизменяемыми структурами данных, каждое из которых предлагает свой уникальный подход к решению этой задачи. История их появления весьма. . .
Создание производительны­­х API с Java и gRPC
Wired 04.03.2025
В разработке производительность и масштабируемость микросервисных приложений играют ключевую роль. Традиционные REST API, несмотря на свою популярность и простоту, не всегда способны обеспечить. . .
Что нового в JDK 24
Wired 04.03.2025
JDK 24 знаменует собой значительный скачок в развитии Java, внося фундаментальные улучшения в производительность, безопасность и удобство разработки. Релиз включает множество революционых изменений,. . .
Разработка блокчейн с использованием Java: смарт-контракты и dApp
Wired 04.03.2025
Современная блокчейн-разработка на Java предоставляет разработчикам широкий спектр возможностей. В отличие от Solidity, который ограничен экосистемой Ethereum, Java позволяет создавать как. . .
WebAssembly в Kubernetes
stackOverflow 03.03.2025
В современной экосистеме облачных технологий WebAssembly (Wasm) становится все более значимым компонентом, предлагая уникальный подход к выполнению кода в распределенных системах. Эта технология. . .
GitHub Actions или Jenkins: Выбираем CI/CD платформу
stackOverflow 03.03.2025
Непрерывная интеграция и развертывание (CI/ CD) изменили подход к разработке программного обеспечения, превратив его в бесшовный процесс от написания кода до развертывания в продакшн. GitHub Actions и. . .
Автоматизация тестирования Pull Request в Kubernetes: Интеграция с GitHub Actions и GKE
stackOverflow 03.03.2025
Масштабные проекты с использованием Kubernetes требуют надежной системы тестирования изменений перед их внедрением в продакшн-среду. Традиционный подход с ручной проверкой Pull Request не справляется. . .
Tестирование Pull Request в Kubernetes с помощью vCluster
stackOverflow 03.03.2025
При работе с микросервисной архитектурой критически важно обеспечить качественное тестирование каждого изменения перед его слиянием в основную кодовую базу. Однако тестирование Pull Request в. . .
Использование пакета Context в Golang
bytestream 03.03.2025
Управление параллельными процессами в современных приложениях - сложная задача, особенно когда речь идет о микросервисной архитектуре и распределенных системах. Пакет context в Go - это гибкое. . .
WebAssembly и Go: Работа с DOM и обработка ошибок
bytestream 03.03.2025
WebAssembly представляет собой технологию, позволяющую запускать низкоуровневый код в браузере практически на нативной скорости. Особенно интересные возможности открываются при использовании. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru