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

Перегрузка оператора "++" и "--" , компилирует, но при запуске программы - ошибка

16.10.2014, 18:58. Показов 1032. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
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
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
#include <iostream> 
#include<ctime>
#include<stdio.h>
#include<locale.h>
#include <windows.h>
#include <conio.h>
#include<iomanip>
#include <cstring>
using namespace std;
class d
{
private:  
    int size ;
    char    *n;
public:
  d()
  {
      size=3;
      n = new char [3];
      n="ab";
  }
    d(int s,char u[])
  {
     size=s;
     n=new char[size+1];
     strcpy(n,u);
  }
    
    d&  operator --() 
    {
        size-=1;
        char *s = new char[size];
        strcpy(s,n);
        while(*(s++)=*(n++));s[size]=0;
        delete [] n;
        n=new char[size+1];
        while(*(n++)=*(s++));
        return *this;
    }
    d& operator ++()
    {
        int newsize=size+1;
        char *s = new char[newsize];
        strcpy(s,n);
        s[size-1]=add();
        s[size]=0;
        delete[] n;
        n=s;
        size=newsize;
        return *this;
    }
 
    char add ()
    {
        cout<<"Enter new symwol: "<<endl;
        char ns;
        cin>>ns;
        return ns;
    }
    void ct()
    {
        cout<<n<<endl;
    }
};
 
 
void main()
{
    
    d a;
    a--;
    a.ct();
    a++;
    a.ct();
   while(1);
}
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
16.10.2014, 18:58
Ответы с готовыми решениями:

В чем ошибка? При запуске программы открывается консоль и сразу ошибка о завершении программы
К тому же выдает warning: deprecated conversion from string constant to 'char*' . #include &lt;iostream&gt; #include &lt;string.h&gt; #include...

Ошибка в конструкторе с параметром. Компилятор не ругается, но при запуске программы возникает ошибка
Я знаю точно, что ошибка в конструкторе с параметром. Компилятор не ругается, но при запуске моей программы windows выдает ошибку. Почему ?...

Ошибка при запуске программы
Здравствуйте, случайно обнаружил ошибку в коде. Суть: При запуске на свежей ОС, вылетает ошибка, а вот на системе в которой программа...

2
 Аватар для TrueBit
100 / 100 / 47
Регистрация: 19.11.2012
Сообщений: 195
16.10.2014, 19:09
Выход за границы массива, например выделяете память под 2 элемента, и в индекс 2(читай третий элемент) пытаетесь записать 0
C++
1
2
char *s = new char[size];
s[size]=0;
Попытка удалить константную строку:
C++
1
2
n="ab";
delete [] n;
За комментируйте код внутри d& operator --() { }, кроме return *this; программа запустится. Другое не смотрел.
0
5499 / 4894 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
16.10.2014, 19:59
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
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
#include <iostream> 
#include<ctime>
#include<stdio.h>
#include<locale.h>
#include <windows.h>
#include <conio.h>
#include<iomanip>
#include <cstring>
using namespace std;
 
class d
{
private:  
    int size; // количество символов в строке (вместе с '\0');
    char    *n;
public:
  d()
  {
      size = 3;
      n = new char[size];
      strcpy(n, "ab");
  }
  
  d(char u[])
  {
     size = strlen(u) + 1;
     n = new char[size];
     strcpy(n, u);
  }
    
    d&  operator --() 
    {
        --size;
        char *s = new char[size];
        
        int i = 0;
        while(i < size - 1)
        {
            s[i] = n[i];
            ++i;
        }
        s[size - 1] = 0;
        delete [] n;
        n = s;
        return *this;
    }
    
    d& operator ++()
    {
        ++size;
        char *s = new char[size];
        strcpy(s, n);
        s[size - 2] = add();
        s[size - 1] = 0;
        delete [] n;
        n = s;
        
        return *this;
    }
 
    char add ()
    {
        cout << "Enter new symwol: "<<endl;
        char ns;
        cin >> ns;
        return ns;
    }
    void ct()
    {
        cout<<n<<endl;
    }
 
    ~d()
    {delete [] n;}
};
 
 
int main()
{
    
    d a;
    --a;
    a.ct();
    ++a;
    a.ct();
    d b("asdf");
    b.ct();
    --b;
    --b;
    b.ct();
    ++b;
    ++b;
    b.ct();
    
    
    cin.get();
    cin.get();
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
16.10.2014, 19:59
Помогаю со студенческими работами здесь

Ошибка при запуске программы
Здравствуйте, разбираюсь в проекте скачанный с github https://github.com/Malemm/ml-graphology Запускаю этот код import os import...

Ошибка при запуске программы на ПК
Вот есть готовый проект, как его подготовить для запуска на другом ПК?? У меня появляются разные траблы: 1)Не был установлен нет,...

Ошибка при запуске программы
При открытии проекта какая-то ошибка, перелазил всё и не знаю, как решить данную проблему. По сути, что из-за представляет программа. Во 2...

Ошибка при запуске программы
Добрый день! При Перетягивании скрипта в main camera ( созданного в визуал студио) - программа не запускается, а выдает ошибку ...

Ошибка при запуске программы
Уважаемые форумчане, здравствуйте. При запуске одной из программ в среде Windows 10 выскакивает сообщение об ошибке &quot;Unable to...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
Фото: Daniel Greenwood
kumehtar 13.11.2025
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru