๊ณต๋ถ€/์ฝ”๋”ฉ

[C++] ๊ทธ์น˜๋งŒ ์ด๋ ‡๊ฒŒ๋ผ๋„ ํ•˜์ง€ ์•Š์œผ๋ฉด iostream์ด ์•„๋‹Œ ๋‚˜์—๊ฒ ๊ด€์‹ฌ๋„ ์ฃผ์ง€ ์•Š๋Š”๊ฑธ(๋ถ„๋ฆฌ ์ปดํŒŒ์ผ)

sourceoftax 2025. 8. 11. 21:01

๋ถ„๋ฆฌ ์ปดํŒŒ์ผ์€ C++ ํ”„๋กœ๊ทธ๋žจ์„ ์—ฌ๋Ÿฌ ํŒŒ์ผ๋กœ ๋‚˜๋ˆ„์–ด์„œ ์ปดํŒŒ์ผ ํ•œ ํ›„, ํ•˜๋‚˜์˜ ๋งํฌ๋กœ ํ•ฉ์น˜๋Š” ๊ฐœ๋ฐœ ๋ฐฉ์‹ ์ค‘ ํ•˜๋‚˜์ด๋‹ค. ๋ถ„ํ•  ์ปดํŒŒ์ผ์ด๋ผ๊ณ  ๋” ๋งŽ์ด ๋ถ€๋ฅด๋Š” ๊ฒƒ ๊ฐ™๋˜๋ฐ ์ผ๋‹จ ๋‚˜๋Š” ๋ถ„๋ฆฌ ์ปดํŒŒ์ผ๋กœ ๋ฐฐ์› ๋‹ค. ์ฒ˜์Œ ๋ฐฐ์šธ ๋•Œ๋Š” ๊ตณ์ด...๋ผ๋Š” ์ƒ๊ฐ์ด ๊ฐ•ํ•˜๊ฒŒ ๋“ค์—ˆ์ง€๋งŒ, ์—ฌ๋Ÿฌ ์‚ฌ๋žŒ์ด ๋™์‹œ ์ž‘์—…ํ•˜๊ธฐ์—๋„ ์œ ์šฉํ•˜๊ณ  ์ฝ”๋“œ๊ฐ€ ๊ธธ์–ด์งˆ ๋•Œ ์–ด๋–ค ํŒŒ์ผ์ธ์ง€ ํŒŒ์•…ํ•˜๊ธฐ๋„ ์‰ฝ๋‹ค. ๋ชจ๋“ˆํ™”์˜ ์ผ์ข…์ด๋ผ ์ƒ๊ฐํ•ด๋„ ์ข‹์„ ๊ฒƒ ๊ฐ™๋‹ค. 

 

๋ถ„๋ฆฌ ์ปดํŒŒ์ผ์€ ํฌ๊ฒŒ ์„ธ ๊ฐœ์˜ ํŒŒ์ผ๋กœ ๋‚˜๋‰œ๋‹ค. ๊ฐ„๋‹จํ•œ ๊ณ„์‚ฐ๊ธฐ ํ”„๋กœ๊ทธ๋žจ๊ณผ ํ•จ๊ป˜ ์‚ดํŽด๋ณด์ž

 

1. ํ—ค๋” ํŒŒ์ผ(Calculator.h)

 #ifndef CALCULATOR_H
 #define CALCULATOR_H
 
 class Calculator {
 private:
	 double result;
 public:
 	Calculator();	//๊ธฐ๋ณธ ์ƒ์„ฑ์ž
 	Calculator(double initial);	//๋งค๊ฐœ๋ณ€์ˆ˜ ์ƒ์„ฑ์ž
    
 	void add(double value);
 	void subtract(double value);
 	void multiply(double value);
 	void divide(double value);
    
 	double getResult() const;
 	void clear();
 	void display() const;
 };
 
 #endif

ํ•จ์ˆ˜ ์ด๋ฆ„๋งŒ ๋Œ€์ถฉ ๋˜์ ธ๋†“๊ณ  ์œ ๊ธฐํ•˜๋Š” ๊ฐ„์•…ํ•œ ํ–‰์œ„๊ฐ€ ์•„๋‹ˆ๋‹ค. ํ—ค๋” ํŒŒ์ผ์€ ์‹ค์ œ๋กœ ๋‹จ์ˆœํžˆ ํด๋ž˜์Šค ์„ ์–ธ ๋ฐ ํ•จ์ˆ˜์˜ ๊ธฐ๋ณธํ˜•๋งŒ ์„ ์–ธํ•˜๋Š” ๊ณณ์ด๋‹ค. ๊ธฐ๋ณธ ๋ผˆ๋Œ€๋ฅผ ์žก์•„ ๋†“๋Š” ์žฅ์†Œ๋กœ ์ดํ•ดํ•˜๋ฉด ์ข‹๋‹ค. ifndef๊ฐ€ ๋ญ”๋ฐ ์”น๋•์•„๋Š” ๋’ค์—์„œ ์„ค๋ช…ํ•˜๊ฒ ๋‹ค...

2. ๊ตฌํ˜„ ํŒŒ์ผ(Calculator.cpp)

 #include "Calculator.h"
 #include <iostream>
 using namespace std;
 
 Calculator::Calculator() : result(0.0) {}//์ดˆ๊ธฐํ™”
 Calculator::Calculator(double initial) : result(initial) {}//์ž…๋ ฅ ๊ฐ’์œผ๋กœ ์ดˆ๊ธฐํ™”
 
 void Calculator::add(double value) {
 result += value;}
 void Calculator::subtract(double value) {
 result -= value;}
 void Calculator::multiply(double value) {
 result *= value;}
 void Calculator::divide(double value) {
 if (value != 0) result /= value;
 else cout << "0์œผ๋กœ ๋‚˜๋ˆ„๊ธฐ ๋ถˆ๊ฐ€" << endl;
 }
 
 double Calculator::getResult() const {
 return result;}
 void Calculator::clear() {
 result = 0.0;}
 void Calculator::display() const {
 cout << result << endl;}

๊ตฌํ˜„์€ ์ด๊ณณ์—์„œ ์ด๋ฃจ์–ด์ง„๋‹ค. ๋งจ ์ฒ˜์Œ์— #include ํ—ค๋” ํŒŒ์ผ์„ ํ†ตํ•ด ์ฐธ์กฐํ•˜๊ฒŒ ๋งŒ๋“ค์–ด์ค€ ํ›„, ๊ตฌ์ฒด์ ์œผ๋กœ ํด๋ž˜์Šค ๋ฐ ํ•จ์ˆ˜์˜ ๋‚ด์šฉ๋ฌผ์„ ์ฑ„์›Œ์ฃผ์ž. ์—ฌ๊ธฐ์—์„œ๋Š” ํ•˜๋‚˜์˜ ๊ตฌํ˜„ ํŒŒ์ผ๋งŒ ์กด์žฌํ•˜์ง€๋งŒ, ์—ฌ๋Ÿฌ ๊ตฌํ˜„ ํŒŒ์ผ์ด ์กด์žฌํ•  ๋•Œ์—๋„ ๊ฐ ๊ตฌํ˜„ ํŒŒ์ผ์€ ๋‹ค๋ฅธ ๊ตฌํ˜„ ํŒŒ์ผ๊ณผ ๋…๋ฆฝ์ ์œผ๋กœ ์ปดํŒŒ์ผ๋œ๋‹ค. ์ด ์ ์—์„œ ์†๋„ ์ตœ์ ํ™”/๋ชจ๋“ˆํ™”/ํ˜‘์—… ํšจ์œจ์„ฑ ๋“ฑ์˜ ์žฅ์ ์ด ๋“œ๋Ÿฌ๋‚˜๊ฒŒ ๋˜๋Š” ๊ฒƒ์ด๋‹ค.

๊ตฌํ˜„ ํŒŒ์ผ์ด ์ปดํŒŒ์ผ๋œ ๊ฒฐ๊ณผ๋ฌผ์€ ๋ชฉ์  ํŒŒ์ผ๋กœ ์ž‘์šฉํ•œ๋‹ค. ์ผ๋ฐ˜์ ์ธ ์œˆ๋„์šฐ์—์„œ๋Š” .obj๋กœ ๋ณด๋ฉด ๋œ๋‹ค. ์ด ์‹œ์ ์—์„œ ๋ชฉ์  ํŒŒ์ผ์€ ๊ธฐ๊ณ„์–ด๋กœ ๋ฒˆ์—ญ๋œ ์ƒํƒœ์ด๋ฉฐ, ์‹คํ–‰ ์ง์ „ ๋‹จ๊ณ„์— ์™€์žˆ๋‹ค. 

 

3. ๋ฉ”์ธ ํŒŒ์ผ(main.cpp)

#include "Calculator.h"
#include <iostream>
using namespace std;

int main(){
	Calculator mycalc;
    
    ๋งˆ์Œ๋Œ€๋กœ ์‚ฌ์šฉํ•ฉ์‹œ๋‹ค...
    
	return 0;
}

์œ ์˜ํ•  ์ ์€ ์—ฌ๊ธฐ์—์„œ ์—ฌ๋Ÿฌ ํŒŒ์ผ๋“ค์ด ํ•ฉ์ณ์ง€๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ, ์ปดํŒŒ์ผ๋œ ๊ฐ๊ฐ์˜ ๋ชฉ์  ํŒŒ์ผ๋“ค์ด ๋งํฌ ๋‹จ๊ณ„์—์„œ ํ•ฉ์ณ์ง„๋‹ค๋Š” ์ ์ด๋‹ค.

์ด์ œ ๋„ˆ๋งŒ์˜ ์ฝ”๋”ฉ์„ ํ•˜๋ ด...

 

์ดํ›„์—๋Š” ๋ถ„๋ฆฌ ์ปดํŒŒ์ผ ๊ณผ์ •์—์„œ ๋‚˜ํƒ€๋‚  ์ˆ˜ ์žˆ๋Š” ์—ฌ๋Ÿฌ ์‚ฌ์†Œํ•œ ๋ฌธ์ œ๋“ค ๋ฐ ์ฃผ์˜์ ์— ๋Œ€ํ•ด ์•Œ์•„๋ณด๋„๋ก ํ•˜์ž. 

 

1. ์ค‘๋ณต ๋ฌธ์ œ

// School.h ํŒŒ์ผ์„ ์ •์˜ํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ด๋ณด์ž
class Student{
	์ด ๋‚ด๋ถ€์—์„œ ์ž์œ ๋กœ์šด ์ฝ”๋”ฉ์ด ์ด๋ฃจ์–ด์ง„๋‹ค...
}


// ์ƒˆ๋กœ์šด ํ—ค๋”๋ฅผ ๋งŒ๋“ค ๊ฒƒ์ด๋‹ค. ์–˜ ์ด๋ฆ„์€ Highschool.h๋กœ ํ•ด๋ณด์ž
# include "School.h"
class Highschool{
	Student student;
}

// ์ดํ›„ ๋˜๋‹ค๋ฅธ ์ƒˆ ํ—ค๋”๋ฅผ ๋งŒ๋“ค ๊ฒƒ์ด๋‹ค. SecondHighschool.h๋กœ ํ•ด๋ณด์ž
# include "School.h"
class SecondHighschool{
	Student student;
}

// ์ด์ œ main์œผ๋กœ ๊ฐ€์ž. ์šฐ๋ฆฌ๋Š” ๋‘ ๊ณ ๋“ฑํ•™๊ต์˜ ์ •๋ณด๊ฐ€ ๋ชจ๋‘ ํ•„์š”ํ•œ ์ƒํƒœ๋‹ค

#include "Highschool.h"
#include "SecondHighschool.h"

์ด๋Ÿฌ๋ฉด ์‹ค์ œ๋กœ ๊ตฌ๋™๋  ๋•Œ School.h๊ฐ€ ๋‘ ๋ฒˆ ์ฐธ์กฐ๋˜์–ด ๋ฒ„๋ฆฐ๋‹ค...

์ด ๋ฌธ์ œ๋ฅผ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉํ•˜๋Š”๊ฒŒ ifndef๋‹ค. 

๋‹ค์‹œ School.h๋ฅผ ์ •์˜ํ•˜๋Š” ๋งจ ์ฒ˜์Œ์œผ๋กœ ๋Œ์•„๊ฐ€์ž
๊ฐ€์žฅ ์œ—์ค„์— ์ด ๋ฉ˜ํŠธ๋ฅผ ์ถ”๊ฐ€ํ•œ๋‹ค

#ifndef SCHOOL_H	// ๋งŒ์ผ School.h๊ฐ€ ์ •์˜๋˜์–ด์žˆ์ง€ ์•Š๋‹ค๋ฉด
#define SCHOOL_H	// School.h๋ฅผ ์ •์˜ํ•œ๋‹ค

class Student{
	์—ฌ ๋Ÿฌ ๋‚ด ์šฉ ๋“ค...
}

#endif	// ์กฐ๊ฑด๋ฌธ(ifndef)๋ฅผ ์ข…๋ฃŒํ•œ๋‹ค. ์ด๋ฏธ ์ •์˜๋˜์–ด ์žˆ๋‹ค๋ฉด ์ดํ›„ ๋‹จ๊ณ„๋กœ ๋„˜์–ด๊ฐ€๋Š” ๊ฒƒ์ด๋‹ค

๋‹ค๋ฅธ ๋ฐฉ์‹๋„ ์กด์žฌํ•œ๋‹ค.

๋˜‘๊ฐ™์ด School.h๋ฅผ ์ •์˜ํ•˜๋Š” ๋งจ ์ฒ˜์Œ์œผ๋กœ ์˜ฌ๋ผ๊ฐ€์ž

#pragma once	//์–˜ ํ•œ ์ค„๋งŒ ์ถ”๊ฐ€

class Student{

}
 
 ๋!

์ด์ชฝ์ด ํ›จ์”ฌ ๊ฐ„๋‹จํ•˜๊ณ  ์ฝ๊ธฐ๋„ ์‰ฝ๊ณ  ์‹ฌ์ง€์–ด ์„ฑ๋Šฅ๋งˆ์ € ์ข‹๊ธฐ๋Š” ํ•˜์ง€๋งŒ, ๋น„ํ‘œ์ค€ ๋ฐฉ์‹์ด๋‹ค. ํ•˜์ง€๋งŒ ์š”์ฆ˜์—” ์ •๋ง ๋Œ€๋ถ€๋ถ„์˜ ์ปดํŒŒ์ผ๋Ÿฌ์—์„œ ์ง€์›ํ•ด์ฃผ๊ณ  ์žˆ๊ธฐ์— ๊ทธ๋ƒฅ ์จ๋„ ๋  ๊ฒƒ ๊ฐ™๋‹ค.

 

2. ์ˆœํ™˜ ์ฐธ์กฐ ๋ฌธ์ œ

Math.h๋ฅผ ์ •์˜ํ•˜๋Š” ๊ณผ์ •์ด๋‹ค

#include "Physics.h"	//์ด๋Ÿฌ๋ฉด ์‚ฌ์ „์— Physics๊ฐ€ ์ •์˜๋˜์–ด ์žˆ์–ด์•ผ ํ•œ๋‹ค

class Math {
	Physics* physics;
}


๊ทธ๋ฆฌ๊ณ  Physics๋ฅผ ์ •์˜ํ•˜๋Š” ๊ณผ์ •์ด๋‹ค

#include "Math.h"
์ด์ฒ˜๋Ÿผ Physics ์ •์˜์— Math๊ฐ€ ํ•„์š”ํ•˜๊ณ , Math ์ •์˜์—๋„ Physics๊ฐ€ ํ•„์š”ํ•œ ๊ฒฝ์šฐ๊ฐ€ ์žˆ๋‹ค

Physics ๋จผ์ € ์ •์˜ํ•  ๊ฑฐ์•ผ Math ๋จผ์ € ์ •์˜ํ•  ๊ฑฐ์•ผ? ์•„๋‹ˆ์ž–์•„ Math ๋จผ์ € ์ •์˜ํ•˜๋ ค๋ฉด Physic ์ •์˜ํ•ด์•ผ ํ•˜์ž–์•„.  Physics ๋จผ์ € ์ •์˜ํ•˜๊ฒ ๋‹ค๊ณ ? ์•„๋‹ˆ์ž–์•„ Physics ์ •์˜ํ•˜๋ ค๋ฉด Math ๋ฏธ๋ฆฌ ์ •์˜ํ•ด์•ผ ํ•˜์ž–์•„

์ด๋Ÿฐ ๋ฌธ์ œ๋Š” ์ „๋ฐฉ ์„ ์–ธ์œผ๋กœ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๋‹ค. ๊ทผ๋ฐ ์ž ๊น ๊ท€์ฐฎ์•„์„œ ์—ฌ๊ธฐ์„œ๋ถ€ํ„ฐ๋Š” ๋‚˜์ค‘์— ์”€