Форум программистов, компьютерный форум, киберфорум
Наши страницы

Программа взаимодействует с классом исключительно через интерфейс. Однажды класс меняется и меняется его хидер. Надо ли перекомпилировать всю программ - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Получить новую матрицу, переставляя ее блоки размера nxn http://www.cyberforum.ru/cpp-beginners/thread803977.html
Прошу помощи с написанием программы. Дана действительная квадратная матрица порядка 2n. Получить новую матрицу, переставляя ее блоки размера nxn. (см. рисунок). Желательно с применением функций (...
C++ Перезагрузка операций Всем привет, есть такая задача. Создать класс - дата с полями в закрытой части: день (1-31), месяц (1-12), год (целое число). Определить необходимые конструкторы, методы доступа, деструктор.... http://www.cyberforum.ru/cpp-beginners/thread803971.html
C++ Назначение static ?
Здравствуйте. Я уже прочитал в двух книгах про статик,читал в википедии,но так и не понимаю для чего он ? Кучи больших текстов и объяснений для чего он,я так и не пойму конкретно,когда мне его нужно...
C++ Выбор первого ЯП для изучения
Всем привет. Я хочу начать учить свой первый ЯП, до этого изучал pascal и C#(Четверь книги Шилдта по 4.0). Есть желание писать программы под Linux(ubuntu), точнее я хотел бы написать свой...
C++ Сделать эту же программу через классы и указатели http://www.cyberforum.ru/cpp-beginners/thread803962.html
Есть программа, её нужно реализовать, используя классы и указатели. Помогите это сделать! (Программа считает расстояние, заносит значение в массив и сортирует по возрастанию) #include <iostream.h>...
C++ Даны натуральное число n, действительные числа a1, …, an Текст задачи Даны натуральное число n, действительные числа a1, …, аn. Если последовательность а1, …, an упорядочена по не убыванию (т. е. Если а1<=a2<=…<=an), то оставить ее без изменения. Иначе... подробнее

Показать сообщение отдельно
kravam
быдлокодер
1701 / 888 / 45
Регистрация: 04.06.2008
Сообщений: 5,498

Программа взаимодействует с классом исключительно через интерфейс. Однажды класс меняется и меняется его хидер. Надо ли перекомпилировать всю программ - C++

09.03.2013, 16:18. Просмотров 398. Ответов 1
Метки (Все метки)

Программа взаимодействует с классом исключительно через интерфейс. Однажды класс меняется и меняется его хидер. Надо ли перекомпилировать всю программу?

То есть я однажды задавал подобный вопрос, но там не было промежуточного звена "абстрактный класс" между программой и объектом, а тут есть. Итак, main.cpp:

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
//main.cpp
#include <windows.h>
#include <stdio.h>
 
//Тут обявлен абстрактный класс pechat
#include "pechat.h"
 
//А тут обыкновенный, неабстрактный класс
//назовём его статическим
//Он производный от абстрактного
#include "pechat_treu.h"
 
 
int main() {
 SetConsoleCP(1251);
 SetConsoleOutputCP(1251);
 
 
 //Ну тут всё просто. В абстрактом классе pechat
 //объявлены две функции реализованные в статическом классе
 //pechat_imeni, ничё сложного
 pechat* p= new pechat_treu; 
 p->pechat_imeni();  
 p->pechat_storon();
 delete p; 
 
 
 getchar ();
 
 return 0;
}
Компилим всё это дело так:

Bash
1
2
3
4
5
6
7
8
9
10
11
rem кропаем pechat_treu.o
del pechat_treu.o
g++ -c pechat_treu.cpp
 
rem кропаем main.o
del main.o
g++ -c main.cpp
 
rem кропаем main.exe (линковка)
del main.exe
g++ -o main.exe main.o pechat_treu.o
А теперь изменим хидер pechat_treu.h изменим жёстко. Понапишем туда функций разных, реализуем их в pechat_treu.cpp... НЕ ТРОГАЯ pechat.h. Компилим:

PureBasic
1
2
3
rem кропаем pechat_treu.o
del pechat_treu.o
g++ -c pechat_treu.cpp
А дальше я не знаю. Самый-то главный вопрос- надо ли компилить main.cpp? С одной стороны- конечно надо. Ведь изменённый файл pechat_treu.h подключен к main.cpp. С другой стороны- не надо, ведь с объектом класса pechat_treu мы взаимодействуем исключительно через НЕИЗМЕНЁННЫЙ абстрактный класс. Так надо или не надо перекомпилировать main.cpp?

Кто скажет "надо"- тому сложнее. Ему придётся привести пример того, как изменеения в pechat_treu.h могут повлиять на работу main (). А кто скажет "не надо" должен будет сослаться на источник какой-то, что ли... Противное мнение можно хотя бы примером подкрепить

Не по теме:

Ну и последняя стадия- линковка, тут всё ясно. Самое-то и главный вопрос, повторю, надо ли кропать main.o?


Тут исходные тексты кодов они очень простые. Только лишь для илюстрации этого вопроса и ничего больше.

исходники
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
//main.cpp
#include <windows.h>
#include <stdio.h>
#include "pechat.h"
#include "pechat_treu.h"
 
 
int main() {
 SetConsoleCP(1251);
 SetConsoleOutputCP(1251);
 
 pechat* p= new pechat_treu; 
 p->pechat_imeni();  
 p->pechat_storon();
 delete p; 
 
 getchar ();
 return 0;
}
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 
//pechat.h
#ifndef _PECHAT_H
#define _PECHAT_H
class pechat {
 public:
  virtual void pechat_imeni  ()= 0;
  virtual void pechat_storon ()= 0;
};
#endif
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 
//pechat_treu.h
#ifndef _PECHAT_TREU_H
#define _PECHAT_TREU_H
#include "pechat.h"
class pechat_treu: public pechat {
 public:
  void pechat_imeni  (); 
  void pechat_storon (); 
};
#endif
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 
//pechat_treu.cpp
#include "pechat_treu.h"
#include <stdio.h>
 
void pechat_treu::pechat_imeni  () {printf ("треугольник\n");}; 
void pechat_treu::pechat_storon () {printf ("три стороны\n");};


спасибо, кто откликнется.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru