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

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

Восстановить пароль Регистрация
 
hoot
 Аватар для hoot
100 / 21 / 3
Регистрация: 10.11.2010
Сообщений: 193
02.11.2011, 17:48     Просьба уточнить часть кода. #1
Доброго дна.

Хотел бы уточнить что выполняет строка: 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++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
oxotnik
 Аватар для oxotnik
1584 / 1061 / 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     Просьба уточнить часть кода.
Ответ Создать тему
Опции темы

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