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

Где размещать реализацию методов класса? - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Задача Иосифа Флавия (Паскаль -> C++) http://www.cyberforum.ru/cpp-beginners/thread1181314.html
Задача Иосифа Флавия. Надеюсь на вашу помощь. Заранее спасибо uses crt; type PCNode=^TCNode; TCNode=record data:integer; next:PCNode; end; var cirList,next:PCNode; i,k:byte;...
C++ Сторонней программой найти координаты нужного элемента на странице браузера Нужно найти координаторы каково либо элемента(текста или div блока нужными параметрами) в открытой вкладке браузера (любого мазила, опера, Гугл, и.т.д) Подскажите так сказать направление куда... http://www.cyberforum.ru/cpp-beginners/thread1181306.html
Реализовать сортировку по возрастанию и убыванию C++
Здравствуйте! имеется код готовой программы. В нем нужно наиболее легким способом ( как сказал преподаватель с помощью двух строк) создать сортировку и по возрастанию и по убыванию! Сам код в...
C++ Записи в линейном списке содержат ключевое поле типа int. Сформировать двунаправленный список. Удалить из него
Записи в линейном списке содержат ключевое поле типа int. Сформировать двунаправленный список. Удалить из него элемент с заданным номером, добавить элемент в начало списка. Вот что у меня получилось:
C++ Составить структуру данных состоящих из полей: Название песни, композитор, поэт, дата 1-го исполнения, город http://www.cyberforum.ru/cpp-beginners/thread1181288.html
Здравствуйте! Помогите, пожалуйста, написать код. Мне нужно составить структуру данных в файле состоящих из полей: название песни, композитор, поэт, дата 1-го исполнения, город. И что бы программа...
C++ Массив структур По какой то причине не корректно работает команда add_plant void command(Aquarium& a){ bool switch_c = true; char command_line; while(switch_c){ cin>>command_line; ... подробнее

Показать сообщение отдельно
lest_
0 / 0 / 0
Регистрация: 28.11.2013
Сообщений: 94

Где размещать реализацию методов класса? - C++

19.05.2014, 20:23. Просмотров 332. Ответов 2
Метки (Все метки)

привет. читаю книжку по С++. автор Либерти. в ней куча опечаток повсюду. наткнулся на очередную непонятку. то ли я не врубаюсь, то ли у них очередной ляп.

предлагается размещать объявление класса в отдельном заголовочном файле .h, а реализацию методов этого класса в основном файле проекта .cpp. Такой пример:

содержимое файла Cat.h :
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
// Объявление класса Cat в файле Cat.h
 
#include <iostream>
 
class Cat
{
public:
    Cat(int);
    ~Cat();
    int GetAge() const { return itsAge; }         // встроенная функция
    void SetAge(int age) { itsAge = age; }        // встроенная функция
    void Meow() const { std::cout << "Meow.\n"; } // встроенная функция
private:
    int itsAge;
};
Содержимое файла Cat.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
#include "Cat.h"
 
// Конструктор класса Cat
Cat::Cat (int initialAge)
{
    itsAge = initialAge;
}
 
Cat::~Cat()
{
}
 
// Создать кота, установить его возраст, мяукнуть,
// сообщить его возраст, затем мяукнуть снова
int main()
{
    Cat Frisky(5);
    Frisky.Meow();
    std::cout << "Frisky is a cat who is ";
    std::cout << Frisky.GetAge() << " years old.\n";
    Frisky.Meow();
    Frisky.SetAge(7);
    std::cout << "Now Frisky is ";
    std::cout << Frisky.GetAge() << " years old.\n";
    
    char response;        
    std::cin >> response; 
        
    return 0;
}
здесь реализации конструктора и деструктора помещены не сразу же после объявления класса (в файле Cat.h), а в главном файле проекта. Что касается методов доступа, то в этом примере автор их сделал встроенными. А если они не встроены, то он также предлагает помещать их реализации в файл .cpp после реализации конструктора и деструктора.

а в чём тут удобство? я бы и объявление класса и реализацию всех его методов запихал в заголовочный файл .h.

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