Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.67/12: Рейтинг темы: голосов - 12, средняя оценка - 4.67
0 / 0 / 0
Регистрация: 31.03.2019
Сообщений: 6
1

Метод класса стирает массив

16.08.2019, 22:08. Показов 2482. Ответов 4
Метки нет (Все метки)

C++ (Qt)
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
#include<iostream>
#include<string>
using namespace std;
class Sstring
{
public:
    Sstring()
    {
        SizeStr = 10;
        char massiv[] = { 'a','b','c','d','e','f','g','h','j','@' };
        this->massiv = massiv;
    }
 
    void OutPutString() {//здесь метод класса стирает массив (или не метод класса)
 
        for (int i = 0; i < SizeStr; i++)
        {
            cout << *(massiv + i) << "\t";
            if (*(massiv + i) == '@') { break; }
        }cout << endl;
    }
private:
    int SizeStr = 1;
    char a, *massiv = &a;
};
int main() {
    Sstring x;
    
    x.OutPutString();
    system("pause");
    return 0;
}
Объясните что происходит, массив затирается это видно в отладчику, спасибо за помощь
0

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Миниатюры
Метод класса стирает массив   Метод класса стирает массив  
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
16.08.2019, 22:08
Ответы с готовыми решениями:

Как передать в метод класса Menu указатель на метод дочернего класса?
Как передать в метод базового класса указатель на метод дочернего: class Menu() { protected: ...

Передать массив обьектов в метод класса
Здраствуйте господа программисты! Подскажите пожалуйста как передать массив обьектов в метод...

В C++ метод производного класса всегда переопределяет метод базового класса?
#pragma once #include &lt;iostream&gt; using namespace std; class Fish { public: virtual...

Написать метод, инициализирующий массив экземпляров класса
метод инициализирует массив экземпляров класса , #include &quot;stdafx.h&quot; #include &lt;iostream&gt;...

4
Mental handicap
1245 / 623 / 171
Регистрация: 24.11.2015
Сообщений: 2,429
16.08.2019, 22:22 2
Лучший ответ Сообщение было отмечено M32 как решение

Решение

M32, ммм, указатель на автоматический объект, а вы чего ожидали?
1
812 / 500 / 210
Регистрация: 19.01.2019
Сообщений: 1,196
16.08.2019, 22:55 3
Лучший ответ Сообщение было отмечено M32 как решение

Решение

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
#include<iostream>
#include<string>
 
class Sstring
{
public:
    ~Sstring() {
        delete[] massiv;
    }
    Sstring() {
        SizeStr = 10;
        char* arr = new char[SizeStr] { 'a','b','c','d','e','f','g','h','j','@' };
        this->massiv = arr;
    }
 
    void OutPutString() {
        for (int i = 0; i < SizeStr; i++) {
            std::cout << massiv[i] << "\t";
        }
        std::cout << '\n';
    }
 
private:
    int SizeStr = 0;
    char a;
    char* massiv;
};
 
int main() {
    {
        Sstring x;
        x.OutPutString();
    }
    system("pause");
    return 0;
}
1
0 / 0 / 0
Регистрация: 31.03.2019
Сообщений: 6
16.08.2019, 23:48  [ТС] 4
указатель был висячим? когда функция заканчивалась, в том месте памяти уже не было необходимости? и во время вызова следующей фунции массив стирался, а динамический массив его стереть может только delete или когда программа завершится, поэтому с ним таких проблем не возникает))) спасибо вы много мне объяснили)).
https://it.wikireading.ru/35886
0
nd2
3416 / 2796 / 1251
Регистрация: 29.01.2016
Сообщений: 9,426
17.08.2019, 01:47 5
Цитата Сообщение от nalbe666 Посмотреть сообщение
C++
1
2
3
4
5
6
Sstring() 
{ 
    SizeStr = 10; 
    char* arr = new char[SizeStr] { 'a','b','c','d','e','f','g','h','j','@' }; 
    this->massiv = arr; 
}
C++
1
2
3
Sstring() : SizeStr(10), massiv(new char[SizeStr] { 'a','b','c','d','e','f','g','h','j','@' })
{ 
}
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
17.08.2019, 01:47

Как описать метод класса? Как двумя способами описать инлайнируемый метод класса? Что такое this?
Раздел 1. Строки: нужен фрагмент кода. Обязательно используйте функции для работы со строками. Как...

Создать для класса виртуальный метод, возвращающий уникальный идентификатор класса
В курсаче по ООП сказано создать для класса виртуальный метод,возвращающий уникальный идентификатор...

Как в методе класса вызвать другой метод того же класса?
class mate { public: int AplusB(int A, int B) { return A+B; } int AplusBplusC(int A,...

Может ли метод родительского класса обратиться к полю дочернего класса
Может ли метод родительского класса обратиться к полю дочернего класса?


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.