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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Heidel
110 / 110 / 7
Регистрация: 11.10.2011
Сообщений: 647
#1

Объявление классов - C++

31.07.2013, 16:41. Просмотров 487. Ответов 9
Метки нет (Все метки)

Только начинаю изучать С++, смотрю видеоуроки.
Там показано такое объявление классов (среда разработки Microsoft Visual C++ 2010)

Создается заголовочный файл Person.h
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <string>
using namespace std;
 
class Person 
{
private:
    string firstname;
    string lastname;
    int arbitrarynumber;
 
public:
    Person(string first, 
        string last,
        int arbitrary);
    ~Person();
};
Создается файл класса Person.cpp
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include "stdafx.h"
 
#include "Person.h"
#include <iostream>
 
Person::Person(string first, string last, int arbitrary) : firstname(first), lastname(last), arbitrarynumber (arbitrary)
{
    cout << "constructing " << 
        firstname << " " << lastname << endl;
}
 
Person::~Person()
{
    cout << "destructing " << 
        firstname << " " << lastname << endl ;
}
и вот сама программа
C++
1
2
3
4
5
6
7
8
9
10
11
#include "stdafx.h"
#include "Person.h"
 
int _tmain(int argc, _TCHAR* argv[])
{
    Person p1 ("Kate", "Gregory", 20);
    {
        Person p2 ("Masha", "Fomina", 87);
    }
    return 0;
}
После С# такой способ объявления класса кажется очень странным. Объявление класса в С++ действительно разносится по разным файлам? Что это дает?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
31.07.2013, 16:41     Объявление классов
Посмотрите здесь:

Объявление и определение классов - C++
Всем здрасти! Имеем простецкий код: class Node; class HeadNode; class TailNode; class Node { public: Node() {}

Объявление взаимодействующих классов - C++
Здравствуйте. Возникла проблема с объявлением классов. Вот код (суть описана в комментариях): #include &lt;iostream&gt; using namespace...

Объявление статических констант шаблонных классов - C++
Что-то я туплю - дан шаблонный класс, принимающий в качестве аргументов шаблона типы Type1 и Type2. В классе есть статическая константа...

Работа с классами. Объявление классов наследования - C++ - C++
На языке С++ разработать класс, описывающий точку на плоскости. Реализовать методы ввода и изменения параметров точки, методы ...

Предварительное объявление классов. Вызвать функцию до реализации класса - C++
Приветствую, народ. Пытаюсь реализовать структуру типа патерна &quot;Посредник&quot;. И при реализации взаимодействий возникла проблемка. ...

Разработать иерархию классов, демонстрирующее работу с коллекцией объектов разных классов - C++
Задание: Разработать в соответствии с индивидуальным заданием иерархию классов и приложение, демонстрирующее работу с коллекцией объектов...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Valentina
68 / 68 / 3
Регистрация: 13.05.2012
Сообщений: 130
31.07.2013, 16:50     Объявление классов #2
да нет можна все вместе одной программой
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
#include "stdafx.h"
#include <string>
#include <iostream>
using namespace std;
 
class Person 
{
private:
    string firstname;
    string lastname;
    int arbitrarynumber;
 
public:
    Person(string first, 
        string last,
        int arbitrary);
    ~Person();
};
Person::Person(string first, string last, int arbitrary) : firstname(first), lastname(last), arbitrarynumber (arbitrary)
{
    cout << "constructing " << 
        firstname << " " << lastname << endl;
}
 
Person::~Person()
{
    cout << "destructing " << 
        firstname << " " << lastname << endl ;
}
int _tmain(int argc, _TCHAR* argv[])
{
    Person p1 ("Kate", "Gregory", 20);
    {
        Person p2 ("Masha", "Fomina", 87);
    }
    return 0;
}
Heidel
110 / 110 / 7
Регистрация: 11.10.2011
Сообщений: 647
31.07.2013, 16:52  [ТС]     Объявление классов #3
Valentina, то, что можно и всё вместе, я понимаю.
Jupiter
Каратель
Эксперт С++
6553 / 3973 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
31.07.2013, 17:02     Объявление классов #4
Цитата Сообщение от Heidel Посмотреть сообщение
Что это дает?
можно спрятать реализацию методов, предоставив "клиентам" лиш хедер файл и бинарник dll/lib/a/...
Heidel
110 / 110 / 7
Регистрация: 11.10.2011
Сообщений: 647
31.07.2013, 17:06  [ТС]     Объявление классов #5
Jupiter, в хедере, как я понимаю, мы объявляем класс и в нем объявляем переменные класса и методы, а описания методов относим в файл .cpp?
0x10
2459 / 1631 / 238
Регистрация: 24.11.2012
Сообщений: 4,013
31.07.2013, 17:07     Объявление классов #6
Heidel, главный замес тут в том, как происходит сборка программы на C++.
В общем случае программа состоит из нескольких .cpp файлов, каждый из которых компилируется по отдельности. На выходе получаются объектные файлы (.o), которые затем уже линкуются вместе. Таким образом, каждый объектный файл содержит реализацию. Но для того, чтобы можно было использовать функции, определенные в некотором файле, необходимо их объявление. Оно и размещается в .h файлах, которые являются своего рода связующими звеньями.
Jupiter
Каратель
Эксперт С++
6553 / 3973 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
31.07.2013, 17:09     Объявление классов #7
Цитата Сообщение от Heidel Посмотреть сообщение
в хедере, как я понимаю, мы объявляем класс и в нем объявляем переменные класса и методы, а описания методов относим в файл .cpp?
да.
Heidel
110 / 110 / 7
Регистрация: 11.10.2011
Сообщений: 647
31.07.2013, 17:13  [ТС]     Объявление классов #8
0x10, и если нужно использовать классы, объявленные в отдельных файлах в программе, то они используются через
C#
1
#include "Person.h"
?
0x10
2459 / 1631 / 238
Регистрация: 24.11.2012
Сообщений: 4,013
31.07.2013, 17:14     Объявление классов #9
Heidel, если нужно именно использовать методы, создавать объекты - да.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
31.07.2013, 17:16     Объявление классов
Еще ссылки по теме:

Вынести методы из классов Panel и PictureBox (явная реализация методов базовых абстрактных классов) - C++
Тема: Множественное наследование. Явная реализация методов базовых абстрактных классов. Как вынести методы из классов Panel и...

Реализация отношения классов типа двунаправленная ассоциация, UML, порядок объявления классов, неполный класс - C++
Доброго времени суток! Осваивая UML, решил реализовать отношение двунаправленной ассоциации по диаграмме: У одного владельца...

объявление перпеменных - C++
Доброй ночи,написал простейший калькулятор(складывает числа) и при запуске вместо: &quot;Введите первое число&quot; выводит модифицированный русский...

[C++] Объявление строк - C++
Дана строка символов, состоящая из произвольного текста, слова разделены пробелами. Разбить исходную строку на две подстроки, причем первая...


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

Или воспользуйтесь поиском по форуму:
Heidel
110 / 110 / 7
Регистрация: 11.10.2011
Сообщений: 647
31.07.2013, 17:16  [ТС]     Объявление классов #10
0x10, угу, понятно, спасибо, интересно.
Yandex
Объявления
31.07.2013, 17:16     Объявление классов
Ответ Создать тему
Опции темы

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