C++로 헤더 파일 만들기

Jinku Hu 2023년10월12일
  1. .h또는.hpp접미사를 사용하여 C++에서 헤더 파일 만들기
  2. 헤더 파일을 사용하여 모듈에서 프로그램의 개별 기능 블록 분해
C++로 헤더 파일 만들기

이 기사에서는 C++에서 헤더 파일을 만드는 방법에 대한 몇 가지 방법을 설명합니다.

.h또는.hpp접미사를 사용하여 C++에서 헤더 파일 만들기

현대 프로그램은 다른 사람들이 구현 한 코드 구조 인 라이브러리 없이는 거의 작성되지 않습니다. C++는 필요한 라이브러리 헤더 파일과 외부 함수 또는 데이터 구조를 가져 오기위한 특수 토큰 인#include를 제공합니다. 일반적으로 라이브러리 헤더 파일에는library_name.h또는library_name.hpp와 같은 특정 파일 이름 접미사가 있습니다. C++ 프로그램 구조는 특정 재사용 가능한 코드 블록을 쉽게 사용할 수 있도록 헤더 파일의 개념을 제공합니다. 따라서 사용자는 자신의 헤더 파일을 만들고 필요에 따라 소스 파일에 포함 할 수 있습니다.

사용자가double유형의 두 데이터 멤버를 포함하는Point라는 클래스를 구현해야한다고 가정하십시오. 클래스에는 두 개의 생성자와+연산자가 정의되어 있습니다. 또한 두 데이터 멤버의 값을cout스트림에 출력하는print기능도 있습니다. 일반적으로 상대적으로 큰 프로그램에 포함 할 때 이름 충돌이 발생하지 않도록Point클래스 정의를 묶는 헤더 가드도 있습니다. include guard 후에 정의 된 변수 이름에 대해 일관된 이름 지정 체계가 있어야합니다. 일반적으로 이러한 변수는 클래스 자체의 이름을 따서 명명됩니다.

#ifndef POINT_H
#define POINT_H

class Point {
  double x, y;

 public:
  Point();
  Point(double, double);
  Point operator+(const Point &other) const;
  void print();
};

#endif

Point클래스의 헤더 파일을 구성하는 또 다른 방법은 동일한 파일에 함수 구현 코드를 포함하는 것입니다. 이전 코드 조각을Point.hpp파일에 넣고 포함하면 정의되지 않은 여러 오류가 발생합니다. 함수는 다음 예제 코드에 정의되어 있으므로Point.hpp헤더 파일로 포함하고 해당 메서드와 함께 클래스를 사용할 수 있습니다.

#include <iostream>
#include <vector>

#ifndef POINT_H
#define POINT_H

class Point {
  double x, y;

 public:
  Point();
  Point(double, double);
  Point operator+(const Point &other) const;
  void print();
};

Point::Point() { x = y = 0.0; }

Point::Point(double a, double b) {
  x = a;
  y = b;
}

Point Point::operator+(const Point &other) const {
  return {x + other.x, y + other.y};
}

void Point::print() { std::cout << "(" << x << "," << y << ")" << std::endl; }

#endif

헤더 파일을 사용하여 모듈에서 프로그램의 개별 기능 블록 분해

또는,보다 유연한 프로젝트 파일 구조를 구현하기 위해 주어진 클래스의 헤더 및 해당 소스 파일에 대한 모듈 기반 분리 체계를 활용할 수 있습니다. 이 디자인에서는 기능적으로 구별되는 각 클래스를 별도의.hpp헤더 파일에 정의하고 동일한 이름을 가진 소스 파일에서 해당 메소드를 구현해야합니다. 클래스에 필요한 헤더 파일이 기본 소스 파일에 포함되고 컴파일되면 전처리 기는 포함 된 모든 헤더 파일의 코드 블록을 결합하고 결과는 단일 기능을 구현하는 다음 소스 코드를 컴파일하는 것과 같습니다. 소스 파일.

#include <iostream>
#include <vector>

#ifndef POINT_H
#define POINT_H

class Point {
  double x, y;

 public:
  Point();
  Point(double, double);
  Point operator+(const Point &other) const;
  void print();
};

Point::Point() { x = y = 0.0; }

Point::Point(double a, double b) {
  x = a;
  y = b;
}

Point Point::operator+(const Point &other) const {
  return {x + other.x, y + other.y};
}

void Point::print() { std::cout << "(" << x << "," << y << ")" << std::endl; }
#endif

using std::cin;
using std::cout;

int main() {
  double x, y;

  cin >> x >> y;
  Point a1(x, y);
  cin >> x >> y;
  Point a2(x, y);

  cout << "a1: ";
  a1.print();
  cout << "a2: ";
  a2.print();

  a1 = a1 + a2;
  cout << "a1+a2: ";
  a1.print();

  exit(EXIT_SUCCESS);
}
작가: Jinku Hu
Jinku Hu avatar Jinku Hu avatar

Founder of DelftStack.com. Jinku has worked in the robotics and automotive industries for over 8 years. He sharpened his coding skills when he needed to do the automatic testing, data collection from remote servers and report creation from the endurance test. He is from an electrical/electronics engineering background but has expanded his interest to embedded electronics, embedded programming and front-/back-end programming.

LinkedIn Facebook

관련 문장 - C++ Header