Member
Статус: Не в сети Регистрация: 12.12.2003 Откуда: Уфа
Билли Бонс А он лучше? Скорость с ним не понижется? Тем более мне все его функции не нужны в данном случае..
пока продолжаю копать, заменил двумерный массив одномерным, единственное, мне не понятно, как работает твой оператор []. Как он перегружает [][]?
Member
Статус: Не в сети Регистрация: 12.12.2003 Откуда: Уфа
Daemon Все, теперь понятно!
Билли Бонс Точно! Понял, все ведь точно также)
В общем заменил я двумерный массив на одномерный с индексацией, и все равно если в деструктор засунуть
Member
Статус: Не в сети Регистрация: 14.01.2004 Откуда: Киев, Украина
kexman ну молодец, а говорил нет ничего, тут копирующий конструктор реализовывать надо, или покрайней мере объявить его в секции private и оставить пустым.
kexman писал(а):
Почему надо объекты класса передавать используя символ &?
Не обязательно, когда ты делаешь так void COGView::DrawScene(CGrid grid) у тебя создается с помощью конструктора копирования новый экземпляр класса CGrid, когда там void COGView::DrawScene(CGrid &grid) передаешь по ссылке, но дело в том, что передаватся тогда может только lvalue, так сделать нельзя DrawScene(CGrid(5, 6)) (хотя некоторые компиляторы позволяют такое зделать), а вот когда делаешь так void COGView::DrawScene(const CGrid &grid) то объект передается по константной ссылке, причем передаватся может также и rvalue, компилятор сам создаст временный объект, а затем он сам разрушится.
Member
Статус: Не в сети Регистрация: 14.01.2004 Откуда: Киев, Украина
Да, по этому в копирующем конструкторе и операторе копирующего присваивания ты должен выделить память под массив точно такой же размерности и скопировать информацию.
Member
Статус: Не в сети Регистрация: 24.07.2005 Откуда: Moscow
кстати, а в Си при инициализации двухмерного массива надо в программе сразу указывать его размер?
в институте задали написать прогу, которая будет складывать две матрицы MxN, но если дилну массива компилятор должен знать заранее, то я даже не знаю, как мне задание сделать
Advanced member
Статус: Не в сети Регистрация: 09.03.2004 Откуда: Кишинёв
Алканаффт Если просто прогу по сложению матриц написать, то просто задаёшь размеры массива с запасом и не мучаешся. Главное не выходить за пределы(проверки устраиваешь).
Member
Статус: Не в сети Регистрация: 11.04.2004 Откуда: СПБ
Алканаффт писал(а):
Си при инициализации двухмерного массива надо в программе сразу указывать его размер
если не путаю - [20] [] допустимо, [] [] - нет ;
в твоем случае - взять с запасом. Добавлено спустя 46 секунд И вообще в нормальных заданиях должны быть указаны пределы M и N, а так же самих чисел...
Member
Статус: Не в сети Регистрация: 14.03.2004 Откуда: Москва
Алканаффт На стадии компиляции компилятору очень желательно знать размер массива, который мы будем создавать, чтобы правильно построить frame функции. Поэтому размер нужно передавать всегда. Дурое дело, что в С98 он по моему может быть динамическим (в случае выделения на стеке), что заменяет использвоание функции <<бр... какой-то из особых allocов, типа amalloc>>. Как ты это сделаешь - это твое дело. И кстати, помни, что изменять можно только элементы масива, но не сам массив. kexman Вопрос не просто. В зависимости от того, что ты делаешь. Передача по ссылки имеет смысл практически всегда, когда внутри функции ты не изменяешь объект. В случае же передачи по значению, должен быть доступен конструктор копирования. Иначе ничего не получиться Добавлено спустя 5 минут, 33 секунды jekimein я бы просто сделал так:
Advanced member
Статус: Не в сети Регистрация: 09.03.2004 Откуда: Кишинёв
nickyoz так тоже можно. Но общий смысл наших функций всё же разный: моя для обычного(односвязного) списка и меняет элементы списка произвольного положения(необязательно соседние).
А по поводу скобок мне так удобнее. На массовом вложении выглядит достаточно красиво и понятно, а ещё, что очень важно(по крайней мере для меня) экономит место .
Member
Статус: Не в сети Регистрация: 14.03.2004 Откуда: Москва
mein Ну. Смотря что хотим... Ну просто во всех стилях, что я повидал (а их не мало) у функций скобочка ставиться на следю строке. А у всяких if и т.д. на текущей Да и зачем место экономить
_________________ ФИЗТЕХ- рулез, ФАКИ - сила, Кванты тоже хорошо
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения