728x90
#include <iostream>
class Calc
{
private:
int m_value;
public:
Calc(int init_value) : m_value(init_value)
{
}
Calc& add(int value)
{
m_value += value;
return *this;
}
Calc& sub(int value)
{
m_value -= value;
return *this;
}
Calc& mult(int value)
{
m_value *= value;
return *this;
}
void print()
{
using namespace std;
cout << m_value << endl;
}
};
int main()
{
Calc cal(10);
cal.add(2).sub(7).mult(4).print();
return 0;
}

 

 

cpp 파일안에서 main 함수와 class 함수를 같이 선언하게 되면 내용이 많을 경우 굉장히 복잡해 질수가 있습니다.

그래서 헤더파일 을 만들어 class  함수를 분리 하려고 합니다.

 

헤더파일을 생성 합니다. 보통 헤더파일의 이름은 class 명과 동일하게 만들지만 꼭 똑같지 않아도 상관은 없습니다.

 

 

#pragma once
#include <iostream>
class Calc
{
private:
int m_value;
public:
Calc(int init_value) : m_value(init_value)
{
}
Calc& add(int value)
{
m_value += value;
return *this;
}
Calc& sub(int value)
{
m_value -= value;
return *this;
}
Calc& mult(int value)
{
m_value *= value;
return *this;
}
void print()
{
using namespace std;
cout << m_value << endl;
}
};

 

 

  • #pragma once  헤더가드 를 선언해서 중복해서 정의하는 것을 방지합니다.
  • 헤더파일 에서는 using namesapce 를 남발 하는것은 그렇게 좋지 않습니다.
  • using namespace 를 사용하게 되면 include 하는 모든 파일이 영향을 받게 됩니다.
  • 헤더 파일에서는 class 의 내용을 전부 넣어도 되지만 헤더파일이 무거워집니다.
  • 헤더파일에 선언만 남겨두고 Calc.cpp 파일을 만들어 몸체를 이동합니다.
  • 함수 명을 클릭하고 Ctrl + . 을 누르면 몸체가 이동합니다.

 

#include "Calc.h"
Calc::Calc(int init_value): m_value(init_value)
{
}
Calc& Calc::add(int value)
{
m_value += value;
return *this;
}
Calc& Calc::sub(int value)
{
m_value -= value;
return *this;
}
Calc& Calc::mult(int value)
{
m_value *= value;
return *this;
}
void Calc::print()
{
using namespace std;
cout << m_value << endl;
}

 

Calc.cpp 에 class 몸체를 옮긴 코드

 

#pragma once
#include <iostream>
class Calc
{
private:
int m_value;
public:
Calc(int init_value);
Calc& add(int value);
Calc& sub(int value);
Calc& mult(int value);
void print();
};

 

 

한결 가벼워진 헤더파일

 

#include <iostream>
#include "Calc.h"
int main()
{
Calc cal(10);
cal.add(2).sub(7).mult(4).print();
return 0;
}

 

 

사용자가 정의한 헤더파일을 호출할땐 " " 를 사용해서 호출합니다.

728x90