Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.78/9: Рейтинг темы: голосов - 9, средняя оценка - 4.78
1 / 1 / 0
Регистрация: 26.01.2014
Сообщений: 213

Раздельная компиляция: что помещать в заголовочные файлы, а что в файлы реализации (исходники)?

19.03.2016, 15:15. Показов 2143. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте, я учусь пользоваться Visual Studio.Пишу программу, в которой создаются и разрушаются объекты, определенного пользователем класса. Выполнить исследование вызовов конструкторов и деструкторов:
ИЗДЕЛИЕ
наименование– char*
шифр– char*
тип упаковки– char*
количество– int

Я так понимаю, данный код пишется в Исходый код.cpp? Вопрос:что писать в заголовочный файл.h ? Скажите как правильно написать программу (желательно с исходником). Большое спасибо.
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
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
#include <iostream>
#include <string>
using namespace std;
 
class PRODUCT
{   // Изделие
 
    char *Name;         // Наименование
    char *Kod;          // Шифр
    char *Package;      // Тип упаковки
    int Count;          // Количество
    public:     
// конструктор без параметров
    PRODUCT() 
    {   cout << " Конструктор без параметров " << endl; 
    Name=new char(sizeof(char));      
    Kod=new char(sizeof(char));
    Package=new char(sizeof(char));
    Count=0;            
    };  
// конструктор с параметрами
    PRODUCT(char *N,char *K,char *P,int C)
    {   cout << " Конструктор c параметром " << endl; 
    Name = new char [strlen(N)+10];
    strcpy (Name,N);
    Kod = new char [strlen(K)+10];
    strcpy (Kod,K);
    Package = new char [strlen(P)+10];
    strcpy (Package,P);
    Count=C;
    }; 
//конструктор копирования
    PRODUCT(const PRODUCT &student)
    {   cout << " Конструктор копирования " << endl; }; 
// деструктор
    ~PRODUCT()
    {   cout << " Деструктор" << endl; };
 
    // компоненты-функции для просмотра(получения)
    char *GetName() {return Name;}; 
    char *GetKod(){return Kod;}; 
    char *GetPackage(){return Package;}; 
    int GetCount() {return Count;}; 
    // и установки полей данных
    void SetName(char*N)    { Name = N;}; 
    void SetKod(char*K) {Kod=K;}; 
    void SetPackage(char*P) {Package=P;}; 
    void SetCount(int C)    {Count=C;}; 
 
    void Set(char *N,char *K,char *P,int C)
    {
        Name=N; Kod=K;  Package=P;  Count=C;
    }; 
 
    void Show()
    {
        cout << endl;
        cout << "Наименование - " << Name << endl;
        cout << "Шифр - " << Kod << endl;
        cout << "Тип упаковки - " << Package << endl;
        cout << "Количество - " << Count << endl;
        cout << endl;
    } 
};
 
void main()
{
    setlocale(0,"");
    PRODUCT Chips;
 
    Chips.Set("Chips","F23B","Bag",6);   
    Chips.SetKod("F23C");
    Chips.Show();
    
    PRODUCT Lolip("Lolip","4E5A","Bag",16);
    Lolip.Set("Lolip","234E","Bag",89); 
    Lolip.Show();
 
 
    PRODUCT Holy=Lolip;   
    system("pause");
 
}
Добавлено через 21 час 33 минуты
Пожалуйста, откликнитесь!


Добавлено через 1 час 45 минут
Помогите, кто-нибудь!!! Здесь есть кто?????????
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
19.03.2016, 15:15
Ответы с готовыми решениями:

Что такое прекомпилированные заголовочные файлы?
Что такое ПРЕкомпилированные заголовочные файлы?? Заранее спасибо!

Заголовочные файлы .h, файлы исходного когда c/c++ и установление связи между ними
Всем добрый вечер!) Относительно недавно стал изучать c/c++, хочу полюбопытствовать ,так как появился вопрос. Почему при объявлении...

Работа в Visual Studio 2015 - как добавить файлы исходного кода и заголовочные файлы?
Приветствую всех! Столкнулся с тем, что решая задачи по книге Лафоре про графику, не смог добавить файлы .h и .cpp, скачав их с одной из...

6
Администратор
Эксперт .NET
 Аватар для OwenGlendower
18278 / 14201 / 5368
Регистрация: 17.03.2014
Сообщений: 28,881
Записей в блоге: 1
19.03.2016, 22:45
Ангел-лина, в h файле размещается объявление класса, а в cpp файле его реализация. Смотри в аттачменте пример проекта с классом PRODUCT для VS 2013. Вообще же подобные вещи описываются в учебниках по C++.
Вложения
Тип файла: zip Product.zip (5.3 Кб, 6 просмотров)
1
1 / 1 / 0
Регистрация: 26.01.2014
Сообщений: 213
20.03.2016, 16:45  [ТС]
Спасибо за Ваш ответ, только вот при отладке вашего приложения возникли ошибки, поэтому опираться на него я не смогу. У меня получилось вот что(см. вложение) по моему заданию ИЗДЕЛИЕ. Но мне нужно следующее:

1. Определить пользовательский класс в соответствии с вариантом задания (смотри приложение).
2. Определить в классе следующие конструкторы: без параметров, с параметрами, копирования. Предусмотреть в конструкторах выдачу сообщений.
3. Определить в классе деструктор. Предусмотреть в деструкторе выдачу сообщения.
4. Определить в классе компоненты-функции для просмотра и установки полей данных.
5. Определить указатель на экземпляр класса.
6. Написать демонстрационную программу, в которой создаются и разрушаются объекты пользовательского класса и каждый вызов конструктора и деструктора сопровождается выдачей соответствующего со-общения (какой объект, какой конструктор или деструктор вызвал).
7. Показать в программе использование указателя на объект .
Помогите мне, пожалуйста, дописать и сделать правильно!
Вложения
Тип файла: zip VS.zip (2.76 Мб, 1 просмотров)
0
1 / 1 / 0
Регистрация: 26.01.2014
Сообщений: 213
20.03.2016, 17:01  [ТС]
OwenGlendower, помогите мне, пожалуйста
ИЗДЕЛИЕ
наименование– char*
шифр– char*
тип упаковки– char*
количество– int
0
Администратор
Эксперт .NET
 Аватар для OwenGlendower
18278 / 14201 / 5368
Регистрация: 17.03.2014
Сообщений: 28,881
Записей в блоге: 1
20.03.2016, 17:52
Ангел-лина, я не специалист по C++. Переношу тему в раздел "C++ для начинающих" т.к. там больше вероятность получить ответ.
0
Модератор
Эксперт CЭксперт С++
 Аватар для sourcerer
5288 / 2376 / 342
Регистрация: 20.02.2013
Сообщений: 5,773
Записей в блоге: 20
20.03.2016, 18:57
Лучший ответ Сообщение было отмечено Ангел-лина как решение

Решение

Цитата Сообщение от Ангел-лина Посмотреть сообщение
Пожалуйста, откликнитесь!
Ангел-лина, с небольшими исправлениями:

Product.h

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
#ifndef PRODUCT_H
#define PRODUCT_H
 
#include <string>
 
typedef std::string str;
 
class Product
{   // Изделие
 
    str Name;         // Наименование
    str Kod;          // Шифр
    str Package;      // Тип упаковки
    int Count;        // Количество
 
public:
//======================================================
// конструктор без параметров
    Product();
 
// конструктор с параметрами
    Product( str N, str K, str P, int C );
 
// конструктор копирования
    Product( const Product &p );
 
// деструктор
    ~Product();
 
// операция присваивания
Product& operator=( const Product &p );
 
//======================================================
// функции-члены для просмотра (получения)
    str& GetName();
    str& GetKod();
    str& GetPackage();
    int GetCount();
    void Show();
 
//======================================================
// и установки полей данных
    void SetName( str N );
    void SetKod( str K );
    void SetPackage( str P );
    void SetCount( int C );
    void Set( str N, str K, str P, int C );
};
 
#endif // PRODUCT_H


Product.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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
#include "Product.h"
#include <iostream>
 
//======================================================
// конструктор без параметров
Product::Product()
{
    std::cout
    << "\nConstructor without parameters has been called.\n";
 
    Name = "Not specified name.";
    Kod = "Not specified code.";
    Package = "Not specified kind of package.";
 
    Count = 0;
}
 
// конструктор с параметрами
Product::Product(str N, str K, str P, int C )
{
    std::cout
    << "\nConstructor with parameters has been called.\n";
 
    Name = N;
    Kod = K;
    Package = P;
    Count = C;
}
 
// конструктор копирования
Product::Product( const Product &p )
{
    std::cout
    << "\nCopy-constructor has been called.\n";
 
    Name = p.Name;
    Kod = p.Kod;
    Package = p.Package;
    Count = p.Count;
}
 
// деструктор
Product::~Product()
{
    std::cout
    << "\nDestructor has been called.\n";
}
 
// операция присваивания
Product& Product::operator=( const Product &p )
{
    if (this != &p)
    {
        Name = p.Name;
        Kod = p.Kod;
        Package = p.Package;
        Count = p.Count;
    }
 
    return *this;
}
 
//======================================================
// функции-члены для просмотра (получения)
str& Product::GetName()
{
    return Name;
}
 
str& Product::GetKod()
{
    return Kod;
}
 
str& Product::GetPackage()
{
    return Package;
}
 
int Product::GetCount()
{
    return Count;
}
 
void Product::Show()
{
    std::cout
    << "\nName - "
    << Name
    << "\nCode - "
    << Kod
    << "\nKind of package - "
    << Package
    << "\nQuantity - "
    << Count
    << "\n";
}
 
//======================================================
// и установки полей данных
void Product::SetName( str N )
{
    Name = N;
}
 
void Product::SetKod( str K )
{
    Kod = K;
}
 
void Product::SetPackage( str P )
{
    Package = P;
}
 
void Product::SetCount( int C )
{
    Count = C;
}
 
void Product::Set( str N, str K, str P, int C )
{
    Name = N;
    Kod = K;
    Package = P;
    Count = C;
}


main.cpp

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include "Product.h"
 
int main()
{
    Product Chips;
 
    Chips.Set( "Chips", "F23B", "Bag", 6);
    Chips.SetKod( "F23C" );
    Chips.Show();
 
    Product Lolip( "Lolip", "4E5A", "Bag", 16 );
    Lolip.Set( "Lolip", "234E", "Bag", 89);
    Lolip.Show();
 
    Product Holy = Lolip;
 
    return 0;
}
0
1 / 1 / 0
Регистрация: 26.01.2014
Сообщений: 213
22.03.2016, 17:22  [ТС]
Благодарю за помощь! Спасибо что есть отзывчивые люди!

И еще, почему файл открывается, и тут же закрывается? у меня VS 2012

Добавлено через 14 минут
Все, разобралась, написала: system( "pause" );
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
22.03.2016, 17:22
Помогаю со студенческими работами здесь

Заголовочные файлы и файлы cpp
Со временем сложилось представление что при написании программ стоит разделять МЕТА данные и данные, но для лучшего понимания своих...

Раздельная компиляция (нюансы использования заголовочных файлов и файлов реализации)
Почему во многих учебниках функции-члены класса внутри класса только объявляют, но определяют вне самого класса (не, ну как бы в классе, но...

Объяснить что такое "раздельная компиляция", что такое "интерфейс класса" и "реализация класса" на примере
Есть класс, содержащий объекты и конструктор. Конструктор объявляется в одном из cpp файлов(их несколько). Можно ли, как-то, использовать...

Заголовочные файлы - C++
Здравствуйте уважаемые пользователи! написал код программы в 3 файлах. При компилировании возникает следующая ошибка: ...

Заголовочные файлы
Здравствуйте ув. Пользователи, У меня такой вопрос: Есть ли хорошие книги по заголовочным файла как правильно ими пользоваться... Просто...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru