C++μμ ν¨μλ μ λ ₯ μΈμμ μλ£νμ μ μ½μ΄ μμ΅λλ€.
μλ₯Ό λ€μ΄ μ μν 2κ°λ₯Ό μ λ ₯λ°κ³ λ κ°μ λν μ μλ₯Ό λ°ννλ ν¨μμ doubleν κ°μ μ λ ₯νλ©΄ λ¬Έμ κ° λ°μν©λλ€.
νμ§λ§ λΉμ·ν λλ λμΌν κΈ°λ₯μ νκ³ , λ€μν μλ£νμ λͺ¨λ μ²λ¦¬ν μ μλ ν¨μκ° νμν λλ μμ΅λλ€.
μ΄λ΄ λ μ°λ¦¬λ ν¨μ μ€λ²λ‘λ©μ μ¬μ©ν©λλ€.
μ½κ² μ€λͺ νμλ©΄, κ°μ μ΄λ¦μ κ°μ‘μ§λ§ λ€λ₯Έ μλ£νμ μ²λ¦¬νλ ν¨μμ λλ€.
μ λ ₯ μΈμμ μλ£νμ΄ λ€λ₯΄λ€λ λ»μ λλ€.
* ν¨μμ λ°ν μλ£νμ μκ΄ μμ΅λλ€. μ λ ₯ μΈμμ μλ£νλ§ κ³ λ €ν©λλ€.
κ°λ¨ν μμλ₯Ό λ³΄κ² μ΅λλ€.
// Overloading Function
#include <iostream>
using namespace std;
int add_num(int, int);
double add_num(double, double);
int main() {
cout << "add_num with 2 integers: " << add_num(10.3, 100.44) << endl;
cout << "add_num with 2 doubles: " << add_num(10, 30) << endl;
}
int add_num(int a, int b) { return a + b; }
double add_num(double a, double b) { return a + b; }
λμΌν μ΄λ¦ add_num μΌλ‘ μ μΈλ λμΌν κΈ°λ₯μ νλ λκ°μ ν¨μκ° μ‘΄μ¬ν©λλ€.
μ μΌν μ°¨μ΄μ μ μ λ ₯ μΈμμ μλ£νκ³Ό λ°νκ°μ μλ£νμ λλ€.
νμ§λ§ μμμ μ€λͺ νλ―, λ°νκ°μ μλ£νμ μ무μ μ΄μ§ μμ΅λλ€.
μ μνμ μ²λ¦¬νλ add_num μμ doubleμ κ°μ λ°ννκ±°λ, double κ°μ μ²λ¦¬νλ ν¨μλ μ μ κ°μΌλ‘ λ°νν΄λ λ¬Έμ λ μμ΅λλ€.
νμ§λ§ μ°λ¦¬κ° μνλ κ²°κ³Όλ μλκ² μ£ ?
λ€μ μμλ μ‘°κΈ λ λ€μν μλ£νμ λ€λ£Ήλλ€.
νμ΄μ¬μ print() ν¨μλ₯Ό C++μμ ꡬνν΄λ³΄λ μ½λμ λλ€.
// Function Overloading
#include <iostream>
#include <string>
#include <vector>
using namespace std;
void print(int);
void print(double);
void print(string);
void print(string, string);
void print(vector<string>);
void print(int num) {
cout << "Printing int: " << num << endl;
}
void print(double num) {
cout << "Printing double: " << num << endl;
}
void print(string s) {
cout << "Printing string: " << s << endl;
}
void print(string s, string t) {
cout << "Printing 2 strings: " << s << " and " << t << endl;
}
void print(vector<string> v) {
cout << "Printing vector of strings: " ;
for (auto s: v )
cout << s + " ";
cout << endl;
}
int main() {
print(100); // int
print('A'); // character is always promoted to int should print 65 ASCII ('A')
print(123.5); // double
print(123.3F); // Float is promoted to double
print("C-style string"); // C-style string is converted to a C++ string
string s {"C++ string"};
print(s); // C++ string
print("C-style string", s); // First argument is converted to a C++ string
vector<string> three_stooges {"Larry", "Moe", "Curly"};
print(three_stooges);
cout << endl;
return 0;
}
μ μμμ λμΌνκ² κ°μ μ΄λ¦ print λ₯Ό μ§λ ν¨μλ€μ΄ μ¬λ¬κ° μ μΈλμκ³ ,
κ°κ° λ€λ₯Έ μλ£ μΈμλ₯Ό λ°μμ ν΄λΉ μΈμμ λν μΆλ ₯μ ν κ²μ λ³Ό μ μμ΅λλ€.
int μλ£νμ μΆλ ₯νλ ν¨μμ λ¬Έμμ΄ λ²‘ν°λ₯Ό μΆλ ₯νκ² νλ©΄ μ€λ₯κ° λ°μνκ² μ£ ?
νμ§λ§ κ²°κ΅ (κ±°μ) λμΌν κΈ°λ₯μ ννλ ν¨μλ€μ΄κΈ° λλ¬Έμ, κ°μ μ΄λ¦μΌλ‘ λ€λ₯Έ μΈμμ λν΄ μ¬λ¬κ°λ₯Ό μ μΈν©λλ€.
μ΄κ²μ΄ function overloading μ λλ€.