본문 바로가기

소프트웨어/C/C++

c/c++] Header와 소스코드분리

클래스 재사용성을 위해서 헤더와(선언부,구현부) 소스코드를 분리한다

이때 헤더파일의 재정의를 방지하기위해

#ifndef A_H // a.h가 이미 정의되어있지않으면

#define A_H // a.h를 정의하시오

...

#endif //ifndef 종료


처럼 ifndef구문을 사용한다.


//Adder.h

#ifndef ADDER_H //h가 디파인되있지않으면

#define ADDER_H // 디파인

 

class Adder {

private:

int op1, op2;

public:

Adder(int a, int b);

int process();

};

 

#endif //ndef분기문 종료


//Adder.cpp

#include<iostream>

using namespace std;

 

#include "Adder.h"

 

Adder::Adder(int a, int b) {

op1 = a; op2 = b;

}

int Adder::process(){

return op1 + op2;

}


//Calculator.h

#ifndef CALCULATOR_H

#define CALCULATOR_H

 

class Calculator {

public:

void run();

};

 

#endif

 



//Calculator.cpp

#include<iostream>

using namespace std;

 

#include "Calculator.h"

#include "Adder.h"

 

void Calculator::run() {

cout<< "두 수 입력 >>";

int a,b;

cin>> a >> b;

Adder adder(a,b);

cout<< adder.process();

}



//main.cpp

#include<iostream>

using namespace std;

 

//#include "Adder.h"

#include "Calculator.h"

 

int main(){

Calculator calc;

calc.run();

return 0;

}