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