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

вопрос по ооп - C++

Восстановить пароль Регистрация
 
nikkka
Мат в 32 хода
 Аватар для nikkka
235 / 170 / 8
Регистрация: 10.09.2009
Сообщений: 1,096
28.06.2010, 16:13     вопрос по ооп #1
вот фаил с описанием класса.
что такое
#ifndef _STOCK1_H_
#define _STOCK1_H_
и
#endif
в 1,2 и последних строках соответсвенно.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#ifndef _STOCK1_H_
#define _STOCK1_H_
class Stock
{
      private:
              char company[30];
              int shares;
              double share_val;
              double total_val;
              void set_tot()
              { total_val = shares * share_val; }
      public:
              Stock();
              Stock(const char * co, int n=0, double pr=0.0);
              ~Stock();
              void buy(int num, double price);
              void sell(int num, double price);
              void update(double price);
              void show();   
};
#endif
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.06.2010, 16:13     вопрос по ооп
Посмотрите здесь:

ООП на С++ C++
C++ ООП - вопрос про деструктор
Вопрос по ООП C++
ООП ВОПРОС C++
C++ Вопрос по ООП
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Nick Alte
Эксперт С++
1590 / 982 / 115
Регистрация: 27.09.2009
Сообщений: 1,897
Завершенные тесты: 1
28.06.2010, 16:26     вопрос по ооп #2
Это так называемые include guard - предохранители, предотвращающие повторное включение файла директивой #include. Точнее говоря, предотвращается не само повторное включение, а его плохие последствия в виде ошибочного повторного определения типов и что там в этом файле содержится.

Принцип действия такой: изначально символ _STOCK1_H_ не определён. При первом включении #ifndef позволяет зайти дальше, после чего этот символ определяется (как пустой, но существующий), и происходит обработка всего, что содержится в файле. Если этот файл попадётся ещё раз из-за повторного #include, #ifndef увидит, что символ _STOCK1_H_ уже определён и выкинет всё содержимое файла, предотвращая неприятности.

Такая система позволяет смело подключать нужные заголовочные файлы везде, где они могут понадобиться, вместо того, чтобы заботиться о том, чтобы их включение было единственным, отслеживая иногда довольно-таки запутанную систему зависимостей между ними.
Хохол
Эксперт C++
 Аватар для Хохол
475 / 443 / 13
Регистрация: 20.11.2009
Сообщений: 1,292
28.06.2010, 16:29     вопрос по ооп #3
#ifdef SMTH - директива препроцессору. Если где-то выше был объявлен макрос SMTH, код между #ifdef SMTH и #endif будет компилироваться, иначе нет.
Соответственно директива ifndef работает наоборот.
В вашем примере это используется для того, чтобы один и тот же код не был подключен дважды.
Еще можно использовать эту директиву например для отладки:

#define DEBUG_MODE

//многакода
#ifdef DEBUG_MODE
//отладочная печать какая-нибудь
#endif

тогда для убирания отладочной печати достаточно закоментить строку с дефайном.
Если наврал в чем-то, поправьте меня, кто-нибудь.

Добавлено через 2 минуты
И да, к ООП это мало отношения имеет
PointsEqual
ниначмуроФ
 Аватар для PointsEqual
832 / 516 / 33
Регистрация: 12.10.2009
Сообщений: 1,915
29.06.2010, 01:54     вопрос по ооп #4
стражи включения

ifndef - if not define -если не определено
define - определить
Yandex
Объявления
29.06.2010, 01:54     вопрос по ооп
Ответ Создать тему
Опции темы

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