Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
Труд вопреки насмешкам
 Аватар для Etyuhibosecyu
430 / 181 / 41
Регистрация: 13.07.2017
Сообщений: 4,641
Записей в блоге: 14

После выхода из функции в переменные записывается мусор

17.03.2018, 16:49. Показов 917. Ответов 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
//Class1.h
class Class2;
class Class1 {
public:
    double a1;
    char *a2;
    char *a3;
    bool a3_stays;
    Class1() {
        a1 = 0;
        a2 = "";
        a3 = "a";
        a3_stays = false;
    }
    Class1(double new_a1, char *new_a2) {
        a1 = new_a1;
        a2 = new_a2;
        a3 = "a";
        a3_stays = false;
    }
    Class1 &operator=(Class1 _Ptr);
    static Class1 f(Class1 x, char *a3);
    operator char *() {
        return a2;
    }
};
//Основной файл
#include <iostream>
#include "Class1.h"
class Class2 {
public:
    Class1 b1, b2, bn;
    static Class1 g1(int x) {
        return Class1();
    }
    static int g2(Class1 x) {
        return 0;
    }
        static Class1 gn(Class1 x, char *a3) {
        Class1 a = x;
        a.a3 = a3;
        return a;
    }
};
Class1 &Class1::operator=(Class1 _Ptr) {
    if (a3_stays == false) {
        a1 = _Ptr.a1;
        a2 = _Ptr.a2;
        a3 = _Ptr.a3;
    }
    else {
        Class1 a = Class2::gn(_Ptr, a3);
        a1 = a.a1;
        a2 = a.a2;
    }
    return *this;
}
Class1 Class1::f(Class1 x, char *a3) {
    Class1 a = Class2::gn(x, a3);
    Class1 b;
    b.a1 = a.a1;
    b.a2 = a.a2;
    b.a3 = a3;
    b.a3_stays = true;
    return b;
}
int main() {
    Class1 t = Class2::f(Class1(555, "asdfg"), "123");
    std::cout << t.a3;
    return 0;
}
Пока функция f выполняется, b.a3 равно тому, что нужно. Как только выполняется оператор return, туда записывается бог знает что.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
17.03.2018, 16:49
Ответы с готовыми решениями:

Записывается мусор в файл
Здравствуйте, есть следующий код для вывода дефолтных значений в файл: #include &lt;iostream&gt; #include &lt;fstream&gt; using...

Из EditText в БД записывается мусор
При сохранении данных из EditText в БД, получается вон та фигня, что на картинке: Код: for (int i = 0; i &lt;= masOfEditName.size()...

В файл записывается мусор
Добрый вечер! Почему при записи в бинарный файл, в файл записывается мусор и соответственно читается из него тоже мусор? #define...

2
Mental handicap
 Аватар для Azazel-San
1246 / 624 / 171
Регистрация: 24.11.2015
Сообщений: 2,429
17.03.2018, 16:56
Etyuhibosecyu, это вообще не должно работать
Цитата Сообщение от Etyuhibosecyu Посмотреть сообщение
a2 = "";
* * * * a3 = "a";
что вы туда кладете?

Цитата Сообщение от Etyuhibosecyu Посмотреть сообщение
Class1 t = Class2::f(Class1(555, "asdfg"), "123");
это не сработает как вы думаете

Цитата Сообщение от Etyuhibosecyu Посмотреть сообщение
static Class1 g1
и почему же static ?)
0
Модератор
Эксперт С++
 Аватар для zss
13773 / 10966 / 6491
Регистрация: 18.12.2011
Сообщений: 29,244
17.03.2018, 17:31
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
#include <iostream>
#include <cstring>
 
class Class1 {
public:
    double a1;
    char a2[100];
    char a3[100];
    bool a3_stays;
    Class1() {
        a1 = 0;
        a2[0]=0;
        a3[0]='a';a3[1]=0;
        a3_stays = false;
    }
    Class1(double x) {
        a1 = x;
        a2[0]=0;
        a3[0]='a';a3[1]=0;
        a3_stays = false;
    }
    Class1(double new_a1, char *new_a2) {
        a1 = new_a1;
        strcpy(a2,new_a2);
        a3[0]='a';a3[1]=0;
        a3_stays = false;
    }
    Class1& Class1::operator=(Class1& _Ptr);
    Class1 f(char *a3);
};
//----------------------------------------
Class1& Class1::operator=(Class1& _Ptr) {
    if(this!=&_Ptr)
    {
        a1 = _Ptr.a1;
        strcpy(a2 , _Ptr.a2);
        if ( !a3_stays ) 
            strcpy(a3 , _Ptr.a3);
    }
    return *this;
}
Class1 Class1::f(char *a3new) 
{
    Class1 b;
    b.a1 = a1;
    strcpy(b.a2 , a2);
    strcpy(b.a3 , a3new);
    b.a3_stays = true;
    return b;
}
//-----Class2 здесь притянут за уши 
//---от него можно оставить только 3 глобальных функции ----------------------
/* 
Class1 g1(int x) {
    return Class1(x);
}
double g2(Class1 x) {
    return x.a1;
}
Class1 gn(Class1 x, char *a3) {
    Class1 a = x;
    strcpy(a.a3,a3);
    return a;
}
*/
//----------------------------
 
int main() {
    Class1 a(555, "asdfg");
    Class1 t = a.f("123");
    std::cout << t.a3;
    return 0;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
17.03.2018, 17:31
Помогаю со студенческими работами здесь

В файл записывается мусор
Я запутался с записью в файл. Короче вот часть кода int bufer; //он заполнен числами ... FILE *out; ...

В массив почему-то записывается мусор
Здравствуйте, дело вот в чем, пишу курсовую программу. Когда рассчитываю массив (тип float) в цикле for на 600 элементов x_i по формуле...

В файл записывается мусор. Подкорректировать код
Нужна помощь! В общем организована БД со структурами и целый перечень функций, которые её обслуживают. Всё работало, но что как-то...

После использования free? он не оказывает влияния после выхода из функции
Есть вот такая функция в которой используется free() void removeNode(struct Node** t) { int key; struct Node ** rm; struct Node...

Выводит мусор после данных , некоторые функции работают странно, исправьте код
Здравствуйте , есть код на курсовую, когда начала оформлять заметила что при выводе выводит мусор , а функция поиска по улице не работает ....


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru