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

Наследование - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Заполнить двумерный массив буквами ввиде спирали с++ http://www.cyberforum.ru/cpp-beginners/thread728627.html
ж жжжжжжж ж ж ж ж ж жж ж ж ж жж ж ж ж ж ж ж жжжжж ж ж ж жжжжжжжжж Заполнить двумерный массив буквами ввиде спирали с++
C++ Датчика случайных чисел MPI Всем доброго утра. Нужна помощь, у самого ничего не выходит. Дано вот такое задание; На каждом процессе с помощью датчика случайных чисел сгенерировать массив 5 вещественных чисел: x = sin(k (rank +1)* rand()), k =1,2,...,5. Распечатать их. Вычислить сумму этих чисел на процессе с номером ‘1’ и получить минимальное число на процессе ‘2’. Отправить полученные результаты на ‘0’ процесс и... http://www.cyberforum.ru/cpp-beginners/thread728615.html
C++ Очередь с приоритетным исключением на основе односвязного списка
Реализовать очередь с приоритетным исключением на основе односвязного списка. Для этого разработать следующие функции: 1. Помещение элемента в очередь. Элемент всегда помещается в хвост очереди. 2. Получение элемента с максимальным значением. Функция должна возвратить позицию первого элемента с максимальным значением (считаем, что максимальный элемент — это и есть элемент с наивысшим...
C++ Классы. Многофайловые проекты. Описать класс с именем STUDENT
Описать класс с именем STUDENT, содержащий поля:  фамилия и инициалы;  номер группы;  успеваемость (массив из пяти элементов). Написать программу, выполняющую следующие действия:  ввод с клавиатуры данных класса типа STUDENT;  вывод на дисплей фамилий и номеров групп для всех студентов, если они имеют оценки 4 и 5;  если таких студентов нет, вывести соответствующее сообщение.
C++ Строки с символами (сколько слов в строке) http://www.cyberforum.ru/cpp-beginners/thread728567.html
Дана строка, содержащая пробелы. Найдите, сколько в нем слов (слово – это последовательность непробельных символов, слова разделены одним пробелом, первый и последний символ строки – не пробел). Вход: На вход подается несколько строк. Выход: количество слов в первой из введенных строк. Не могу понять. Объясните что к чему.
C++ рекурсия и массивы: числа Фибоначчи привет всем ! как с помощью рекурсии с параметрами массива реализовать числа Фибоначчи ? вот что то на клепал #include "stdafx.h" #include <iostream> #include <locale.h> using namespace std; #define g_max 15 подробнее

Показать сообщение отдельно
kravam
быдлокодер
 Аватар для kravam
1512 / 872 / 44
Регистрация: 04.06.2008
Сообщений: 5,268
12.12.2012, 13:46     Наследование
Внимание! Щас я попытаюсь на пальцах объяснить ТС, зачем нужно писать реализацию класса в *.cpp; собсно, уже сказали, но я попытаюсь другими словами.

Как тебе уже тут сказали, НИКТО не запрещает тебе писать реализацию в *.h, я так и делаю кстати, никаких проблем. Пример:
C++
1
2
3
4
5
6
7
8
9
10
11
#include <windows.h>
#include <stdio.h>
#include "first.h"
 
int main(void) {
 SetConsoleCP(1251);
 SetConsoleOutputCP(1251);
 foo f;
 getchar ();
 return 0;
}
C++
1
2
3
4
5
6
7
/* first.h */
 
class foo {
 public:
 foo () {printf ("создание объекта класса foo");};
 ~foo () {};
};
+++++++++++++++++++++++++++++++++++++++++++++++++

Вопрос: (задан уже) Ответ: выносить реализацию в отдельный *.cpp файл нужно вовсе не для удобства чтения, олично всё читается и в *.h файле; но для БЫСТРОТЫ компиляции. Надеюсь, ТС понимает, что если класс foo разрастётся, то компилить эту прогу будет всё дольше и дольше. А теперь представь себе, что компиляция происходит долго, а ты изменения проделываешь все с функцией main, то есть класс foo у тебя неизменен, изменяется раз от разу только main и каждый раз ты это класс ПЕРЕКОМПИЛИРУЕШЬ и ждёшь... Долго и муторно, знаешь ли.

Вот и придумали люди- может как-то класс отдельно компилить? А потом присоединят к main. И ты знаешь у них получилось. Придумали такую штуку как раздельная компиляция. ДЛя неё-то и нужно выносить реализацию класса в *.cpp файл:

C++
1
2
3
#include <stdio.h>
#include "first.h"
foo::foo () {printf ("создание объекта класса foo");};
C++
1
2
3
4
5
class foo {
 public:
 foo () ;
 ~foo () {};
};
Теперь компиль этот файл, но ОПРЕДЕЛЁНЫМ образом. Вот так:
C++
1
g++ -Wall -c first.cpp
Результат- файл first.o; тот же экзешник, но другого формата

теперь можешь смело изменять функцию main, компилить main.cpp и "присоединять" файл first.o, всё произойдёт гораздо быстрее, нежели бы first.o не было:

C++
1
g++ -Wall main.cpp first.o
До новых встреч!

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