Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 5.00/15: Рейтинг темы: голосов - 15, средняя оценка - 5.00
 Аватар для gore-lykovoe
32 / 32 / 3
Регистрация: 04.04.2010
Сообщений: 414

Не получается перезгрузка =

15.04.2012, 15:45. Показов 3919. Ответов 53
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
C++
1
2
3
4
5
6
7
template <class T> Array<T>& Array<T>::operator = ( const Array<T> &t )
    {
        Array<T> ar( t.size );
        for ( int i = 0; i < t.size; i ++ )
            ar[i] = t.p[i];
        return ar;
    }
Ошибки не выдает, но когда присваиваю пустому массиву, массив, заполненный разными объектоми и вывожу полученный массив, то вместо объектов которые были в заполененном массиве, выводятся объекты созданные конструктором по умолчанию( В чем проблема?

Добавлено через 5 минут
Суть кода, можно понять отсюда: Шаблоны классов: контейнер. Несколько вопросов , там только вместо Array - название vect, но там вообще неправильно оператор = перегружен.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
15.04.2012, 15:45
Ответы с готовыми решениями:

Перезгрузка метода с одинаковыми параметрами
class Figure { public: virtual string getName() = 0; virtual double getSquare() = 0; virtual double...

Загрузить видео вконтакте. Странно получается. Почему так получается?
Решил згрузить в контакт Мультфильм Дикая планета http://www.youtube.com/watch?v=8-nwT9YQ0t0&amp;NR=1&amp;feature=endscreen в максимально...

Почему не получается получить и изменить ul через js по id? А что выше id получается
все данные классы находятся в меню шапке 1 работает а 2 нет сайт http://phpstack-189549-661864.cloudwaysapps.com/ ...

53
 Аватар для gore-lykovoe
32 / 32 / 3
Регистрация: 04.04.2010
Сообщений: 414
15.04.2012, 18:19  [ТС]
Студворк — интернет-сервис помощи студентам
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
template <class T>  class MyArray
    {
        T *p;
        int size;
    public:
        MyArray( );
        MyArray( int s );
        ~MyArray( );
        MyArray& operator = ( const MyArray &t );
        MyArray operator + ( const MyArray &t );
        T& operator [] ( int k );
    };
    
    template <class T> MyArray<T>::MyArray()
    {
        size = 100;
        p = new T[size];
    }
 
    template <class T> MyArray<T>::MyArray( int s )
    {
        size = s;
        p = new T[size];
    }
 
    template <class T> MyArray<T>::~MyArray()
    {
        delete []p;
    }
    
    template <class T> MyArray<T>& MyArray<T>::operator = ( const MyArray<T> &t )
    {   
        if ( this != &t)
        {
            delete []p;
            p = new T [ t.size ];
            for ( int i = 0; i < t.size; i ++ )
                p [i] = t.p[i];
        }
        return *this;
    } 
    
    template <class T> MyArray<T> MyArray<T>::operator + ( const MyArray &t )
    {
        MyArray<T> ar( size + t.size ) ;
        for ( int i = 0; i < size; i ++ )
            ar.p[i] = p[ i ];
 
        for ( int i = size; i < size + t.size; i ++ )
            ar.p[i] = t.p[ i-size ];
        
        return ar;
 
    }
    template <class T> T& MyArray<T>::operator [] ( int k )
    {
    if ( k < 0 || k >= size )
    {
        cout << "Ошибка, неккоректный индекс" << endl;
        exit( 0 );
    }
    else
        return p[ k ];
    
    }
Добавлено через 3 минуты
Цитата Сообщение от silent_1991 Посмотреть сообщение
Поле size временного объекта, но не результирующего, в который происходит копирование.
так, немного не понял, так поле t.size будет равно 8, когда мы перегружаем "=" ?
0
Эксперт С++
5058 / 3118 / 271
Регистрация: 11.11.2009
Сообщений: 7,044
15.04.2012, 18:20
Вот на такой функции main ваш код отработал. Тем не менее то, что вы не изменяете размер - ошибка.
C++
1
2
3
4
5
6
7
8
9
10
11
12
int main()
{
    MyArray<int> arr1(5), arr2(3), arr3(3);
    
    arr2[0] = arr3[0] = 10;
    arr2[1] = arr3[1] = 20;
    arr2[2] = arr3[2] = 30;
    
    arr1 = arr2 + arr3;
    
    return 0;
}
Добавлено через 58 секунд
gore-lykovoe, поле t.size будет равно 8. Только вот какой от этого прок, если после отработки оператора = поле объект, к которому происходит присваивание, останется таким же, как и до присваивания?
1
 Аватар для gore-lykovoe
32 / 32 / 3
Регистрация: 04.04.2010
Сообщений: 414
15.04.2012, 18:25  [ТС]
Цитата Сообщение от silent_1991 Посмотреть сообщение
поле объект, к которому происходит присваивание, останется таким же, как и до присваивания?
так там же есть строчка
C++
1
p = new T [ t.size ];
Поле ведь изменится!?
0
Эксперт С++
5058 / 3118 / 271
Регистрация: 11.11.2009
Сообщений: 7,044
15.04.2012, 18:26
gore-lykovoe, вот каким образом изменение указателя на область памяти влияет на целочисленную переменную, хранящую размер, скажите на милость?
1
 Аватар для gore-lykovoe
32 / 32 / 3
Регистрация: 04.04.2010
Сообщений: 414
15.04.2012, 18:27  [ТС]
Цитата Сообщение от silent_1991 Посмотреть сообщение
Вот на такой функции main ваш код отработал.
вставил его к себе, скомпилировал, нормально, только у меня там system("pause") есть в самом конце, после нажатия на "продолжить", программа завершилась с критической ошибкой. (прошлой)
0
Эксперт С++
5058 / 3118 / 271
Регистрация: 11.11.2009
Сообщений: 7,044
15.04.2012, 18:29
gore-lykovoe, http://liveworkspace.org/code/... 21ecf0780a
Специально вставил перед возвратом из оператора присваивания распечатку размера массива после выполнения оператора (по логике должен быть 6).
1
 Аватар для gore-lykovoe
32 / 32 / 3
Регистрация: 04.04.2010
Сообщений: 414
15.04.2012, 18:32  [ТС]
Цитата Сообщение от silent_1991 Посмотреть сообщение
вот каким образом изменение указателя на область памяти влияет на целочисленную переменную, хранящую размер, скажите на милость?
оно не влияет, но я не понял почему вы задаете такой вопрос.
Цитата Сообщение от silent_1991 Посмотреть сообщение
поле объект, к которому происходит присваивание, останется таким же, как и до присваивания
я так думал, что эта строчка как-раз и изменит поле объект, к которому происходит присваивание.

если не сложно, можете сказать тогда - как исправить? Сделать отдельную функцию size(), как у вас в примере? Я просто не понимаю, что она изменит.
0
Эксперт С++
5058 / 3118 / 271
Регистрация: 11.11.2009
Сообщений: 7,044
15.04.2012, 18:34
gore-lykovoe, метод size по-любому нужен для полноты, но вы приглядитесь лучше к 32 строке моего кода. Внимательно приглядитесь.

Цитата Сообщение от gore-lykovoe Посмотреть сообщение
я так думал, что эта строчка как-раз и изменит поле объект, к которому происходит присваивание.

Изменит. Но какое поле, по вашему, она изменит?
1
 Аватар для gore-lykovoe
32 / 32 / 3
Регистрация: 04.04.2010
Сообщений: 414
15.04.2012, 18:35  [ТС]
Цитата Сообщение от silent_1991 Посмотреть сообщение
по логике должен быть 6
странно, тоесть в этом проблема?
0
Эксперт С++
5058 / 3118 / 271
Регистрация: 11.11.2009
Сообщений: 7,044
15.04.2012, 18:36
gore-lykovoe, нет, вы же видели по ссылке, что код отрабатывает и завершается нормально. Но проблема, тем не менее есть, и я удивлён, что у вас такие трудности с её пониманием.
0
 Аватар для gore-lykovoe
32 / 32 / 3
Регистрация: 04.04.2010
Сообщений: 414
15.04.2012, 18:43  [ТС]
Цитата Сообщение от silent_1991 Посмотреть сообщение
но вы приглядитесь лучше к 32 строке моего кода
m_size = source.size();
в этой строчке мы получим размер временного объекта size, может вы 33 имели ввиду?


Цитата Сообщение от silent_1991 Посмотреть сообщение
Изменит. Но какое поле, по вашему, она изменит?
вы имели ввиду - чье поле она изменит? Поле объекта, который вызывает присваивание, тоесть в который и будет все копироваться.

Возможно я туплю очень? Или провалы в знаниях?
0
Эксперт С++
5058 / 3118 / 271
Регистрация: 11.11.2009
Сообщений: 7,044
15.04.2012, 18:46
gore-lykovoe, не пытайтесь догадаться, что и имел ввиду. По моему предыдущему сообщению это вполне ясно. Я указал на верную строку в своём коде. И чётко написал: "какое поле будет изменено". Какое, а не чьё.

Добавлено через 2 минуты
Цитата Сообщение от gore-lykovoe Посмотреть сообщение
мы получим размер временного объекта size
Мы его не просто получили. Мы сделали главное - присвоили его.
1
 Аватар для gore-lykovoe
32 / 32 / 3
Регистрация: 04.04.2010
Сообщений: 414
15.04.2012, 18:47  [ТС]
Цитата Сообщение от silent_1991 Посмотреть сообщение
какое поле будет изменено
будет изменен указатель на динамическую память, тоесть теперь поместятся в эту память все объекты
0
Эксперт С++
5058 / 3118 / 271
Регистрация: 11.11.2009
Сообщений: 7,044
15.04.2012, 18:48
gore-lykovoe, так. А что будет с полем size?
1
 Аватар для gore-lykovoe
32 / 32 / 3
Регистрация: 04.04.2010
Сообщений: 414
15.04.2012, 18:51  [ТС]
Цитата Сообщение от silent_1991 Посмотреть сообщение
Мы сделали главное - присвоили его.
понял, исправлю

Добавлено через 1 минуту
Цитата Сообщение от silent_1991 Посмотреть сообщение
так. А что будет с полем size?
понял, это конечно очень не правильно, но это не должно было влиять на работу программы. Не понимаю, почему у меня ошибки сыпятся(
0
Эксперт С++
5058 / 3118 / 271
Регистрация: 11.11.2009
Сообщений: 7,044
15.04.2012, 18:52
Цитата Сообщение от gore-lykovoe Посмотреть сообщение
временного объекта
Кстати, там будет не обязательно ссылка на временный объект. Мы можем один массив присваивать другому, тогда там будет ссылка на обычный объект, созданный нами собственноручно.

Добавлено через 28 секунд
gore-lykovoe, это и не влияет. Можете ещё раз сходить по ссылке выше.
1
 Аватар для gore-lykovoe
32 / 32 / 3
Регистрация: 04.04.2010
Сообщений: 414
15.04.2012, 18:59  [ТС]
Цитата Сообщение от silent_1991 Посмотреть сообщение
Можете ещё раз сходить по ссылке выше.
я вывел значения полученного массива arr1, все они равны рандомным числам. Поэтому видать ошибку в конце и выдает. Только я не понимаю, почему числа рандомные(
0
Эксперт С++
5058 / 3118 / 271
Регистрация: 11.11.2009
Сообщений: 7,044
15.04.2012, 19:01
gore-lykovoe, http://liveworkspace.org/code/... 7fd156903e
1
 Аватар для gore-lykovoe
32 / 32 / 3
Регистрация: 04.04.2010
Сообщений: 414
15.04.2012, 19:25  [ТС]
Цитата Сообщение от silent_1991 Посмотреть сообщение
http://liveworkspace.org/code/2ec407...2a627fd156903e
чудеса какие то, надо пересоздать проект пожалуй

Добавлено через 21 минуту
Цитата Сообщение от silent_1991 Посмотреть сообщение
http://liveworkspace.org/code/2ec407...2a627fd156903e
вообщем создал новый проект, скопировал код с сайта этого, не работает, выдает левые значения и завершается с ошибкой. Видать дело в среде. Я под VS-2010. Вы можете попробывать у себя запустить, пожалуйста? Или что мне делать?
0
Каратель
Эксперт С++
6610 / 4029 / 401
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
15.04.2012, 19:33
Цитата Сообщение от gore-lykovoe Посмотреть сообщение
Я под VS-2010. Вы можете попробывать у себя запустить, пожалуйста? Или что мне делать?
а теперь подробно шаг за шагом опиши что делаешь, как создаешь проект, какие ошибки
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
15.04.2012, 19:33

Дифференциальное уравнение второго порядка не получается в получается в маткаде
Дифференциальное уравнение второго порядка не получается в маткаде. Помогите решить

Получается одно и тоже значение. Постоянно получается значение legit. Заранее спасибо!
#include &lt;stdio.h&gt; #include &lt;math.h&gt; #define eps 0,001 int main() { float t,x,e,y; printf(&quot;vvedite x: &quot;); ...


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

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
Новые блоги и статьи
сукцессия 29. Переход от одних деревьев на другие делать более или менее вероятностным?
anaschu 12.07.2026
Насколько смена типов микоризы — исключительное событие в двухвековой сукцессии? Оценка вероятности в пространстве параметров В текущей версии модели успешно реализован ключевой механизм. . .
сукцессия 27. Думаю, как переделывать уже написанную статью с планами на сукцессию.
anaschu 12.07.2026
Анализ соответствия модели требованиям Реализованные компоненты: Механизм закисления почвы через протонную помпу Конкуренция между типами микориз pH как триггер сукцессии C/ P соотношение. . .
Сукцессия 26. Мат модель создана.
anaschu 12.07.2026
Модель смены растительных сукцессий посредством управления грибами работает внутри небольшой ячейки почвы, восстанавливающейся после пожара, где ненадолго бывшее царство хвойных снова захватили. . .
Решил проблему с ошибкой пагинации сообщений с сервера на алгоритме обхода дерева "Эстафета хвоста".
Hrethgir 12.07.2026
Проблема была в том, что удалялась именно новая кнопка, а не старая. Ни один ИИ не обнаружил это, а сам я смог только когда с работой стало попроще и когда заставил работать будущее автономное. . .
сукцессия 25. Хронология ошибок
anaschu 12.07.2026
# От 50-тонного гриба до устойчивого леса: хроника ошибок при построении модели вековой сукцессии микоризы ## О чём эта статья В процессе построения ОДУ-модели (система дифференциальных. . .
сукцессия 24. Промежуточное общее описание модели
anaschu 12.07.2026
Хендофф: модель АМ→ЭКМ сукцессии микоризы (ризосфера, 50 лет) Содержание проекта Симуляция вековой (50 лет) экологической сукцессии в почве леса Основные участники: АМ-гриб, ЭКМ-гриб,. . .
сукцессия 23. Более физиологичная физиология, более экологичная экология, более диффурные диффуры.
anaschu 12.07.2026
Что реально нашли и починили за эти 5 часов Правило Линдемана (КПД конверсии сахара в тело, kEff) — раньше 100% полученного углерода шло прямо в биомассу гриба; теперь только kEff=0. 5 (после. . .
сукцессия 22. От артефактов к физиологии: калибровка агентной модели грибной сукцессии для воспроизведения сезонной динамики и pH-плато
anaschu 11.07.2026
Аннотация В данной работе представлена калибровка агентной модели динамики грибных сообществ (fungal-succession), направленная на устранение нефизичных артефактов (коллапс биомассы, мгновенное. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru