Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.82/11: Рейтинг темы: голосов - 11, средняя оценка - 4.82
27 / 19 / 8
Регистрация: 08.06.2015
Сообщений: 491

Что делать с константой в конструкторе копирования

24.06.2020, 11:07. Показов 2472. Ответов 25
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте,
решаю серию шаблонных задач, где нужно расписать конструктор, деструктор, констр.копирования, перегрузить операторы.
И в задании указывается, обратите внимание на присутствующие константы.
Ну и возникает вопрос, а что с константой делать в таком случае? если при копировании там ничего не изменить?

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
class Student 
{
private:
    const unsigned long number;
    char* name;
public:
    Student(char* n, unsigned long num) : number(num)
    {
        name = new char(*n);
    }
    ~Student()
    {
        delete name;
    }
    Student(const Student& st): 
    {
        delete name;
        name = new char(*(st.name));
    }
    Student& operator=(const Student& st)
    {
        if (this != &st)
        {
            delete name;
            name = new char(*(st.name));
 
        }
        return *this;
    }
    friend bool operator<(const Student& st1, const Student& st2);
    
    friend ostream& operator<<(const Student& st, ostream &os);
    
    
};
bool operator<(const Student& st1, const Student& st2)
{
    if (st1.name < st2.name) return true;
    else return false;
}
ostream& operator<<(const Student& st, ostream& os)
{
    os << "Name: " << st.name << " Number: " << st.number << endl;
    return os;
}
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
24.06.2020, 11:07
Ответы с готовыми решениями:

Что делать дальше после копирования виндовс с HDD на SSD
Здравствуйте! Я не очень разбираюсь в SSD по этому возникает много вопрос. Один из них Я установил SSD затем перенёс виндовс (весь диск C...

О конструкторе копирования
Доброго времени суток всем присутствующим. Интересует маленький вопрос. В 15-й строке происходит прямое обращение к полю входного объекта...

Ошибка в конструкторе копирования
Всем привет, не могу понять проблему, у меня есть структура: struct WindowRender : public sf::RenderWindow, public Render; Мне...

25
19501 / 10106 / 2461
Регистрация: 30.01.2014
Сообщений: 17,825
24.06.2020, 13:30
Студворк — интернет-сервис помощи студентам
Сергей Кос, вообще самый полный и подробный учебник из доступных на русском именно по С++ - это учебник С. Липпмана "C++ Базовый курс". Всякие Дейтелы и Прата - тоже неплохие, но, как мне показалось, уступают по точности изложения и охвату тем.
Учебник Страуструпа "Принципы и практика", стоит особняком и учит по сути не С++, а программированию с использованием С++. Его если и стоит читать, то уже после Липпмана.
1
27 / 19 / 8
Регистрация: 08.06.2015
Сообщений: 491
16.07.2020, 03:25  [ТС]
я только уточнить, а в операторе присваивания никак не передать значение одной константы другой как в конструкторе копирования? Вдруг я опять чего-то недоглядел

C++
1
2
3
4
5
6
7
8
9
10
11
12
 Student& operator=(const Student& st): nummer(st.nummer)
    {
        if (this != &st)
        {
            delete [] name;
            name = new char[strlen(st.name) + 1];
            for(int i = 0; i <= strlen(st.name); i++)
           {
                *(name + i) = *(st.name + i);
           }
        return *this;
    }
0
Вездепух
Эксперт CЭксперт С++
 Аватар для TheCalligrapher
13210 / 6843 / 1824
Регистрация: 18.10.2014
Сообщений: 17,306
16.07.2020, 03:27
Цитата Сообщение от Сергей Кос Посмотреть сообщение
а в операторе присваивания никак не передать значение одной константы другой
Разумеется, нет. Это ж константа. Невозможно присвоить константе новое значение.
1
"C with Classes"
2022 / 1404 / 523
Регистрация: 16.08.2014
Сообщений: 5,885
Записей в блоге: 1
16.07.2020, 03:35
Цитата Сообщение от DrOffset Посмотреть сообщение
Сергей Кос, вообще самый полный и подробный учебник из доступных на русском именно по С++ - это учебник С. Липпмана "C++ Базовый курс". Всякие Дейтелы и Прата - тоже неплохие, но, как мне показалось, уступают по точности изложения и охвату тем.
Учебник Страуструпа "Принципы и практика", стоит особняком и учит по сути не С++, а программированию с использованием С++. Его если и стоит читать, то уже после Липпмана.
Я ничего этого не читал
0
27 / 19 / 8
Регистрация: 08.06.2015
Сообщений: 491
16.07.2020, 04:08  [ТС]
в этой теме мне дали ссылку на шаблон конструкторов и перегрузку операторов.
Там используется функция strcpy(), но у меня код с ней не компилируется, говорит не безопасно. Делал тогда копирование через цикл. Но сейчас встал вопрос все-таки, а что сделать, чтобы strcpy заработал? Не только в указанном шаблоне, но и в лекциях препода везде используется strcpy, а я вот крайний какой-то

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
class Student 
{
private:
    const unsigned long number;
    char* name;
public:
    Student(char* s, unsigned long num) : number(num)
    {
        name = new char[strlen(s)+1];
        
    strcpy(name, s);
    }
    ~Student()
    {
        delete [] name;
    }
Еще что-то к этому списку что-нибудь подключать необходимо для strcpy()?
C++
1
2
3
4
#include <iostream>
#include <string>
#include <cstring>
#include <cstdlib>
0
Вездепух
Эксперт CЭксперт С++
 Аватар для TheCalligrapher
13210 / 6843 / 1824
Регистрация: 18.10.2014
Сообщений: 17,306
16.07.2020, 04:14
Цитата Сообщение от Сергей Кос Посмотреть сообщение
но у меня код с ней не компилируется, говорит не безопасно.
Visual Studio не нравится strcpy
This function or variable may be unsafe
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
16.07.2020, 04:14

Указатель this в конструкторе копирования
Добрый всем вечер. Подскажите пожалуйста, как правильно применить в конструкторе копирования указатель this? Вот есть код. ...

Параметр в конструкторе копирования
Есть класс class CMatrix{ valarray&lt;valarray&lt;double&gt; &gt; matrix; public: CMatrix(const CMatrix &amp;M); ..... }; ...

Ошибка в конструкторе копирования
Здравствуйте. Есть один класс для работы с многочленами, который хранит элементы многочлена в списке. Так вот, в конструкторе копирования...

Ошибка в конструкторе копирования C++
Помогите, пожалуйста создать конструктор копирования, который будет копировать элемент и добавлять его в список. У меня получился такой...

Ошибка в конструкторе копирования класса
Хотя и делал по образцу, но почему то лезет ошибка записи за пределы динамического массива, хотя и переменные копируются верно (отладчик...


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

Или воспользуйтесь поиском по форуму:
26
Ответ Создать тему
Новые блоги и статьи
Море в объективе
kumehtar 06.07.2026
Хотел написать много проникновенных слов, но передумал. Оно само - говорит. Кто слышит тот слышит.
Doom для терминала без стрельбы и монстров. 3D Raycasting на ascii.
dcc0 05.07.2026
Попросил нейронную сеть deepai. org написать рейкастинг 3D с библиотекой ncurses для Linux. Чтобы можно было ходить на стрелочки. Чтобы стены были отрисованы символами. Справилась. Первый вариант. . .
Установка статуса документа по условию
Maks 05.07.2026
Алгоритм из решения ниже реализован на нетиповом документе "НарядПутевка" разработанного в КА2. Задача: в табличной части "Материалы" документа при записи автоматически устанавливать статус. . .
Сезонность и суточность закисления почв
anaschu 04.07.2026
200 часов это все равно моловато. Есть ситуации, но нестандартные, когда смена происходит за 5 лет. Но обычно это 50 лет и более. Наверное, закисление почвы происходит сезонно в средней. . .
В чем ценность человеческого опыта в глобальном смысле?
kumehtar 03.07.2026
Возможно, ценность человека не в том, что он однажды достигает мудрости, а в том, что он становится носителем карты пути. Он знает не только истину, но и последовательность внутренних изменений,. . .
интеграция AnyLogic с самописным REST API и переход на Odoo
anaschu 03.07.2026
Успешная интеграция AnyLogic с самописным REST API и переход на промышленную Odoo WMS Сегодня проделал огромный путь от простой симуляции физических процессов до построения полноценной. . .
Поиск всех путей на ориентированном графе. Linux
dcc0 02.07.2026
Переработка старого кода из моей статьи. Через несколько переработок от PHP кода к C89 (надеюсь, 89). Но довольно запутанно получилось. Код для Linux. Но если убрать time и то, что с ним. . .
Сам себя обучал rest api
anaschu 02.07.2026
Педагогический лайфхак: Почему чистый REST API для ученика намного круче, чем готовые библиотеки Когда мы отказались от капризного JAR-файла AnyLogic и переписали код на стандартный HttpClient,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru