Форум программистов, компьютерный форум CyberForum.ru

реализовать операцию присваивания - C++

Восстановить пароль Регистрация
 
Leno4ka805
0 / 0 / 0
Регистрация: 28.11.2013
Сообщений: 3
09.01.2014, 21:24     реализовать операцию присваивания #1
Описать класс Строка с динамическим выделением памяти, реализовать операцию присваивания, остальные методы достаточно только объявить. Не могу понять, нужна ли здесь перегрузка =, а если нужна, то как это реализовать для строк.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
dzrkot
zzzZZZ...
 Аватар для dzrkot
516 / 346 / 53
Регистрация: 11.09.2013
Сообщений: 1,977
09.01.2014, 21:29     реализовать операцию присваивания #2
Цитата Сообщение от Leno4ka805 Посмотреть сообщение
нужна ли здесь перегрузка =
да, нужна.
Цитата Сообщение от Leno4ka805 Посмотреть сообщение
то как это реализовать для строк.
да просто, очищаем строку, потом копируем в неё новую или вызываем конструктор со строкой b и притсваиваем его по значению вызывающему объекту
C++
1
2
delete [] a;
strcpy(a,b);
Leno4ka805
0 / 0 / 0
Регистрация: 28.11.2013
Сообщений: 3
09.01.2014, 21:39  [ТС]     реализовать операцию присваивания #3
а можно как то поточней, не особо понятно
newb_programmer
 Аватар для newb_programmer
237 / 237 / 19
Регистрация: 03.09.2011
Сообщений: 553
09.01.2014, 22:34     реализовать операцию присваивания #4
Leno4ka805,
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
47
48
49
50
51
52
53
54
55
#include <iostream>
#include <ctime>
using namespace std;
 
class String {                  //объявление класса
    char* s;                    //указатель на строку
    int len;                    //длина строки
public:
 
    String() {                  //конструктор по умолчанию
        s=NULL;
        len=0;
    }
 
    String(char* t) {           //конструктор с параметром
        len=strlen(t);
        s=new char[len+1];
        strcpy(s,t);
    }
 
    String(const String& obj) { //конструктор копирования
        len=obj.len;
        s=new char[len+1];
        strcpy(s,obj.s);
    }
 
    void Del() {                //удаление строки
        delete s;
        len=0;
    }
 
    String& operator=(String& obj) {    //перегрузка присваивания
        if (this!=NULL)
            Del();
        len=obj.len;
        s=new char[len+1];
        strcpy(s,obj.s);
        return *this;
    }
 
    void Print() {              //печать строки
        cout<<s<<endl;
    }
 
};
 
int main()
{
    String A("12345");
    String B;
    B=A;
    B.Print();
    system("pause");
    return 0;
}
Yandex
Объявления
09.01.2014, 22:34     реализовать операцию присваивания
Ответ Создать тему
Опции темы

Текущее время: 01:16. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru