๋ณธ๋ฌธ์œผ๋กœ ๋ฐ”๋กœ๊ฐ€๊ธฐ
728x90

*<์”น์–ด๋จน๋Š” C++>์„ ๋ณด๋ฉฐ ๊ณต๋ถ€ํ•˜์—ฌ ์ •๋ฆฌํ•œ ๊ธ€์ž…๋‹ˆ๋‹ค.

 

 

 

 

1. ํ•จ์ˆ˜ ์˜ค๋ฒ„๋กœ๋”ฉ(Overloading)์ด๋ž€?

 

  • ๋™์ผํ•œ ์ด๋ฆ„์˜ ํ•จ์ˆ˜๋ฅผ ๋งค๊ฐœ๋ณ€์ˆ˜ ํƒ€์ž…, ๋งค๊ฐœ๋ณ€์ˆ˜์˜ ๊ฐœ์ˆ˜์— ๋”ฐ๋ผ ๊ตฌ๋ถ„ํ•˜์—ฌ ์—ฌ๋Ÿฌ ๊ฐœ ์ƒ์„ฑ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•˜๋Š” ๊ฒƒ์„ ๋งํ•ฉ๋‹ˆ๋‹ค.
  • ๋น„์Šทํ•œ ๊ธฐ๋Šฅ์ธ๋ฐ ํ•จ์ˆ˜ ์ด๋ฆ„์ด ๊ฐ๊ฐ ๋‹ฌ๋ผ, ๊ฐœ๋ณ„์ ์œผ๋กœ ๊ธฐ์–ตํ•  ์ˆ˜๊ณ ๊ฐ€ ์—†์–ด์ ธ์„œ ํŽธ๋ฆฌํ•ฉ๋‹ˆ๋‹ค.
  • ํ•จ์ˆ˜์˜ ๋ฆฌํ„ด ํƒ€์ž…์œผ๋กœ๋„ ๊ตฌ๋ถ„์ด ๊ฐ€๋Šฅํ•˜๋‚˜, ๋ฆฌํ„ด ํƒ€์ž…๋งŒ ๋‹ค๋ฅด๊ณ  ๋งค๊ฐœ๋ณ€์ˆ˜๊นŒ์ง€ ๋˜‘๊ฐ™์€ ํ•จ์ˆ˜๋ฅผ ๋งŒ๋“œ๋Š” ๊ฒƒ์€ ๋ถˆ๊ฐ€๋Šฅ
#include <iostream>


// ํ•จ์ˆ˜ ์˜ค๋ฒ„๋กœ๋”ฉ
int Add(int x, double y) { return x + y; }
int Add(int x, int y) { return x + y; }
double Add(double x, double y) { return x + y; }
// int Add(double x, double y)๋Š” double Add(double x, double y)๊ฐ€ ์žˆ์–ด์„œ ๋ถˆ๊ฐ€๋Šฅ

int main() {

    int num1 = Add(3, 5);
    int num2 = Add(3, 5.5);
    double num3 = Add(3.5, 6.5);

    std::cout << num1 << std::endl;   // 8
    std::cout << num2 << std::endl;   // 8.5
    std::cout << num3 << std::endl;   // 10.0
}

 

 


2. C++ ์ปดํŒŒ์ผ๋Ÿฌ์—์„œ ํ•จ์ˆ˜๋ฅผ ์˜ค๋ฒ„๋กœ๋”ฉํ•˜๋Š” ๊ณผ์ •

 

  1. ํ•จ์ˆ˜์˜ ์ž๊ธฐ ์ž์‹ ๊ณผ ํƒ€์ž…์ด ์ •ํ™•ํžˆ ์ผ์น˜ํ•˜๋Š” ํ•จ์ˆ˜๋ฅผ ์ฐพ๋Š”๋‹ค.
  2. 1๋ฒˆ์—์„œ ์ฐพ์ง€ ๋ชปํ•  ๊ฒฝ์šฐ, ์•„๋ž˜์™€ ๊ฐ™์€ ํ˜•๋ณ€ํ™˜์„ ํ†ตํ•ด ์ผ์น˜ํ•˜๋Š” ํ•จ์ˆ˜๋ฅผ ์ฐพ๋Š”๋‹ค.
    • char, unsigned char, short  →  int๋กœ ๋ณ€ํ™˜
    • unsigned short๋Š” int์˜ ํฌ๊ธฐ์— ๋”ฐ๋ผ int ๋˜๋Š” unsigned int๋กœ ๋ณ€ํ™˜
    • float    double๋กœ ๋ณ€ํ™˜
    • enum    int๋กœ ๋ณ€ํ™˜
  3. 1, 2๋ฒˆ์—์„œ๋„ ์ฐพ์ง€ ๋ชปํ•  ๊ฒฝ์šฐ, ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ข€ ๋” ํฌ๊ด„์ ์ธ ํ˜•๋ณ€ํ™˜์„ ํ†ตํ•ด ์ผ์น˜ํ•˜๋Š” ํ•จ์ˆ˜๋ฅผ ์ฐพ๋Š”๋‹ค.
    • ์ž„์˜์˜ ์ˆซ์ž(numeric) ํƒ€์ž…์€ ๋‹ค๋ฅธ ์ˆซ์ž ํƒ€์ž…์œผ๋กœ ๋ณ€ํ™˜ (float →  int)
    • enum ๋˜ํ•œ ์ž„์˜์˜ ์ˆซ์ž ํƒ€์ž…์œผ๋กœ ๋ณ€ํ™˜ (enum double)
    • 0์€ ํฌ์ธํ„ฐ ํƒ€์ž…์ด๋‚˜ ์ˆซ์ž ํƒ€์ž…์œผ๋กœ ๋ณ€ํ™˜๋œ 0์€ ํฌ์ธํ„ฐ ํƒ€์ž…์ด๋‚˜ ์ˆซ์ž ํƒ€์ž…์œผ๋กœ ๋ณ€ํ™˜
    • ํฌ์ธํ„ฐ๋Š” void ํฌ์ธํ„ฐ๋กœ ๋ณ€ํ™˜
  4. ์œ ์ € ์ •์˜๋œ ํƒ€์ž… ๋ณ€ํ™˜์œผ๋กœ ์ผ์น˜ํ•˜๋Š” ํ•จ์ˆ˜๋ฅผ ์ฐพ๋Š”๋‹ค.

 

 

์œ„ ๊ณผ์ •์„ ํ†ตํ•˜๋”๋ผ๋„ ์ผ์น˜ํ•˜๋Š” ํ•จ์ˆ˜๋ฅผ ๋ชป ์ฐพ๊ฑฐ๋‚˜, ๊ฐ™์€ ๋‹จ๊ณ„์—์„œ ๋‘ ๊ฐœ ์ด์ƒ์ด ์ผ์น˜ํ•˜๋Š” ๊ฒฝ์šฐ ๋ชจํ˜ธํ•˜๋‹ค(ambiguous)๊ณ  ํŒ๋‹จํ•˜์—ฌ ์˜ค๋ฅ˜ ๋ฐœ์ƒ์‹œํ‚ต๋‹ˆ๋‹ค.

#include <iostream>

int Add(int x, int y) { return x + y; }

int main() {

	int x = 5;
	char c = 'A';

	int num = Add(x, c);  // 1๋‹จ๊ณ„์—์„œ ์ฐพ์ง€ ๋ชปํ•ด, 2๋‹จ๊ณ„๋กœ ๋„˜์–ด๊ฐ€์„œ ์˜ค๋ฒ„๋กœ๋”ฉ ์ ์šฉ

	std::cout << num << std::endl;
}

 

 

int Add(int x, char y) ํ•จ์ˆ˜๋Š” ์—†๊ธฐ์—, 1๋‹จ๊ณ„์—์„œ 2๋‹จ๊ณ„๋กœ ๋„˜์–ด๊ฐ”์Šต๋‹ˆ๋‹ค.

char → int ๋กœ ํ˜•๋ณ€ํ™˜ ์ง„ํ–‰ ํ›„, ๋‹ค์‹œ ์ฐพ๊ธฐ ๋•Œ๋ฌธ์— ์ด๋ฒˆ์—๋Š” ์ฐพ์„ ์ˆ˜ ์žˆ์—ˆ๋˜ ๊ฑฐ์ฃ .

// ๋ชจํ˜ธํ•œ ์˜ค๋ฒ„๋กœ๋”ฉ
// ์ ์ ˆํ•œ ์˜ˆ์‹œ๊ฐ€ ์—†์–ด์„œ ์ฝ”๋“œ๋ฅผ ์ธ์šฉํ–ˆ์Šต๋‹ˆ๋‹ค.

#include <iostream>

void print(int x) { std::cout << "int : " << x << std::endl; }
void print(char x) { std::cout << "double : " << x << std::endl; }

int main() {
  int a = 1;
  char b = 'c';
  double c = 3.2f;

  print(a);
  print(b);
  // print(c);  ๊ฐ™์€ ๋‹จ๊ณ„์— ๋‘ ๊ฐœ ์ด์ƒ์˜ ๊ฐ€๋Šฅํ•œ ์ผ์น˜๊ฐ€ ์กด์žฌํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์˜ค๋ฅ˜

  return 0;
}

 

print(c)์˜ ๊ฒฝ์šฐ, 1, 2๋‹จ๊ณ„๋ฅผ ๋„˜์–ด์„œ 3๋‹จ๊ณ„๊นŒ์ง€ ์ด๋ฅด๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์„œ ์ž„์˜์˜ ์ˆซ์ž ํƒ€์ž…์œผ๋กœ ๋ณ€ํ™˜๋˜๊ธฐ์— double์ด int, char๋กœ๋„ ๋ณ€ํ™˜๋  ์ˆ˜ ์žˆ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

 

๊ทธ๋Ÿฌ๋ฉด void print(int x), void print(char x)์™€ ์ผ์น˜ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๊ฐ™์€ ๋‹จ๊ณ„์—์„œ ๋‘ ๊ฐœ ์ด์ƒ์˜ ์ผ์น˜ํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ์ƒ๊ธฐ๊ฒŒ ๋˜์ฃ . ๋”ฐ๋ผ์„œ, ์˜ค๋ฅ˜๊ฐ€ ๋‚œ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

 

 

 

728x90
๋ฐ˜์‘ํ˜•