Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
hoot
 Аватар для hoot
100 / 21 / 3
Регистрация: 10.11.2010
Сообщений: 193
#1

Просьба уточнить часть кода. - C++

02.11.2011, 17:48. Просмотров 304. Ответов 4
Метки нет (Все метки)

Доброго дна.

Хотел бы уточнить что выполняет строка: Ranch[i]->Fly();

Код функции:
C++
1
2
3
4
5
for(i=0;i<NumberHorses;i++)
{
    Ranch[i]->Fly();
    delete Ranch[i];
}
Как я понимаю, функция очищает память выделенную для указателей.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.11.2011, 17:48     Просьба уточнить часть кода.
Посмотрите здесь:

часть кода (матрица) C++
Объясните часть кода программы C++
C++ Поправить формулу(часть кода)
Как работает эта часть кода? C++
std::istream часть кода C++
Объяснить часть кода C++
C++ Вынести часть кода в функцию
C++ Не понимаю часть кода
Не умею делать АЛГОРИТМИЧЕСКУЮ ЧАСТЬ кода С++ C++
Просьба объяснить работу std::thread в двух коротких примерах кода C++
Обьясните часть кода C++
C++ Почему не работает часть кода?

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
oxotnik
 Аватар для oxotnik
1586 / 1063 / 33
Регистрация: 21.08.2008
Сообщений: 4,545
Записей в блоге: 1
02.11.2011, 17:50     Просьба уточнить часть кода. #2
Цитата Сообщение от hoot Посмотреть сообщение
Хотел бы уточнить что выполняет строка: Ranch[i]->Fly();
вызывает функцию полета

Цитата Сообщение от hoot Посмотреть сообщение
Как я понимаю, функция очищает память выделенную для указателей.
сначала заставляет летать, а потом удаляет отлетавшийся объект
hoot
 Аватар для hoot
100 / 21 / 3
Регистрация: 10.11.2010
Сообщений: 193
02.11.2011, 17:55  [ТС]     Просьба уточнить часть кода. #3
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
#include <iostream>
#include <string>
 
using namespace std;
 
class Horse
{
public:
    void Gallop(){cout<<"Galloping!"<<endl;}
    virtual void Fly(){cout<<"Horse can`t fly!"<<endl;}
private:
    int itsAge;
};
 
class Pegasus:public Horse
{
public:
    virtual void Fly(){cout<<"I can Fly! I can Fly!"<<endl;}
};
 
const int NumberHorses = 5;
 
int main()
{
Horse*Ranch[NumberHorses];
Horse*pHorse;
int choice, i;
for(i=0;i<NumberHorses;i++)
{
    cout<<"(1)Horse (2)Pegasus: ";
    cin>>choice;
    if(choice==2)
        pHorse=new Pegasus;
    else
        pHorse=new Horse;
    Ranch[i]=pHorse;
}
cout<<"\n";
 
for(i=0;i<NumberHorses;i++)
{
    Ranch[i]->Fly();
    delete Ranch[i];
}
 
system ("pause");
return 0;
}

Вот весь учебный код.
Объект отлетал до вызова функции.
Когда коментил указанную функцию, изменений никаких небыло.

Мне кажется что функция вызывает каждый элемент массива для очистки его.
Просто хочу удостоверится что правильно понимаю.
Bers
Заблокирован
02.11.2011, 18:13     Просьба уточнить часть кода. #4
Цитата Сообщение от hoot Посмотреть сообщение
Мне кажется что функция вызывает каждый элемент массива для очистки его.
C++
1
2
3
4
5
6
7
for(i=0;i<NumberHorses;i++)
{ 
    Ranch[i]->Fly(); //заставить каждого зверя полетать
    delete Ranch[i]; //удалить зверя нафег. 
              //(очистить память на которую указывает элемент массива,
              // являющийся указателем на конкретного зверя)
}
hoot
 Аватар для hoot
100 / 21 / 3
Регистрация: 10.11.2010
Сообщений: 193
02.11.2011, 18:50  [ТС]     Просьба уточнить часть кода. #5
Точно!)
Втыкаю, я n-раз просматривал код и считал что раньше зверя заставляют летать, поэтому возник вопрос зачем второй раз обращаются к этому методу.
Спасибо всем за помощь. Ну и сори за вопрос)
Yandex
Объявления
02.11.2011, 18:50     Просьба уточнить часть кода.
Ответ Создать тему
Опции темы

Текущее время: 21:02. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru