본문 바로가기
프로그래밍 언어/C++

[C++] 클래스 파일 분할

by 까망 하르방 2025. 1. 30.
반응형

클래스 파일 분할

일반 함수와 같이 클래스도

멤버 함수를 선언과 구현으로 분리하는 것이 일반적이다.

 

템플릿과 같이

반드시 헤더 파일에 멤버 함수 구현부도 같이 있어야 하는 경우도 있다.

📌 헤더파일(.h) 만들어서 include 하기

 

[C/C++] [전처리기] 헤더파일(.h) 만들어서 include 하기

헤더파일(.h) 만들어서 include 하기 헤더파일(.h)에는 함수 원형이나 클래스만 선언한다.내부 구현은 별도의 파일에서 구현한다. [Calc.h]int add(int A, int B);  [Calc.cpp]#include "Calc.h"int add(int a, int b)

zoosso.tistory.com


하나의 파일에서 구현

[main.cpp]

#include <iostream>
#include <string>

class Blog
{
	std::string url;
	int year;
public:
	Blog(const std::string& u, int y)
	{
		url = u;
		year = y;
	}

	void setYear(int y)
	{
		year = y;
	}
};

int main()
{
	Blog harbang ("zoosso.tistory", 2025);
	harbang.setYear(2026);
}

 


파일 분리 Version

[Blog.h]

#pragma once

#include <string>

class Blog
{
	std::string url;
	int year;
public:
	Blog(const std::string& u, int y);
	void setYear(int y);
};

 

 

[Blog.cpp]

#include "Blog.h"

Blog::Blog(const std::string& u, int y)
{
	url = u;
	year = y;
}

void Blog::setYear(int y)
{
	year = y;
}

 

 

[main.cpp]

#include "Blog.h"

int main()
{
	Blog harbang("zoosso.tistory", 2025);
	harbang.setYear(2026);
}

[Blog.h]에서 중복 include 막기 위해 #prgam once 추가

📌 [C/C++] Header Guard 활용

 

[C/C++] Header Guard 활용

여러 파일에서 특정 헤더 파일을 #include 할 수 있다.이 경우 헤더파일이 중복 컴파일되어 에러 발생하게 된다. 그렇기에 모든 header 파일은 여러 번 포함되는 것을 방지하기 위해header guard를 가지

zoosso.tistory.com

 

 

[Blog.cpp]에서 함수명 앞에 Blog:: 와 같이 Namespace 추가

📌 [C++] 네임스페이스(namespace) 활용

 

[C++] 네임스페이스(namespace) 활용

『 :: 』 기호는 Scope Operator로 "범위지정 연산자" 라고 한다.(네임스페이스 지정할 때 사용하는 연산자)#include namespace A{ void Print() { printf("a...\n"); }}namespace B{ void Print();}int main(){ A::Print(); B::Print();}

zoosso.tistory.com

반응형

'프로그래밍 언어 > C++' 카테고리의 다른 글

[C++] constexpr function  (1) 2025.01.29
[C++] member initializer list  (1) 2025.01.29
[C++] lower_bound, upper_bound 사용해보기  (1) 2025.01.27
[C++] rvalue reference  (4) 2025.01.27
[C++] constexpr 키워드  (2) 2025.01.26

댓글