Итак, на днях я просматривал несколько старых книг по C ++ и заметил способ создания класса C ++, которого я никогда раньше не видел.Все, что я видел до этого момента, всегда использовало #include "header.h" и компилировало файлы реализации отдельно.Я видел, что автор этой книги на самом деле поместил директиву include в реализацию в конце заголовочного файла и исключил файл .cpp из компиляции.Кто-нибудь использовал этот стиль?
Например: у меня есть main.cpp employee.h employee.cpp
//main.cpp
#include <iostream>
#include <stdio.h>
#include <string>
#include "employee.h"
void main()
{/*some code*/}
//employee.h
#ifndef EMPLOYEE_H
#define EMPLOYEE_H
class employee
{
public:
//public members
private:
//private members
}
#endif
//employee.cpp
#include "employee.h"
#include <string>
//public member definitions
Я бы обычно скомпилировал этот проект так:
g++ main.cpp employee.cpp
Но вПример автора выглядит следующим образом:
//main.cpp
#include <iostream>
#include <stdio.h>
#include <string>
#include "employee.h"
void main()
{/*some code*/}
//employee.h
#ifndef EMPLOYEE_H
#define EMPLOYEE_H
class employee
{
public:
//public members
private:
//private members
}
#include "employee.cpp" // <-- the line of code that caught my attention
#endif
//employee.cpp
#include <string>
//public member definitions
И полученный код компилируется как
g++ main.cpp
Это просто предпочтение стиля или есть какие-то реальные преимущества в этом?Я бы подумал, что это не очень хорошо масштабируется, но я не очень опытный программист на C ++.