C++ Tutorial/Function/function overload with cast

Материал из C\C++ эксперт
Перейти к: навигация, поиск

Automatic type conversions can affect overloaded function resolution

#include <iostream> 
using namespace std; 
 
void f(int x); 
 
void f(double x); 
 
int main() { 
  int i = 1; 
  double d = 1.1; 
  short s = 9; 
  float r = 1.5F; 
 
  f(i); // calls f(int) 
  f(d); // calls f(double) 
 
  f(s); // calls f(int) -- type conversion 
  f(r); // calls f(double) -- type conversion 
 
  return 0; 
} 
 
void f(int x) { 
  cout << "Inside f(int): " << x << "\n"; 
} 
 
void f(double x) { 
  cout << "Inside f(double): " << x << "\n"; 
}
Inside f(int): 1
Inside f(double): 1.1
Inside f(int): 9
Inside f(double): 1.5

Define overload function with short integer parameter

#include <iostream> 
using namespace std; 
 
void f(int x); 
void f(short x); 
void f(double x); 
 
int main() { 
  int i = 1; 
  double d = 1.1; 
  short s = 9; 
  float r = 1.5F; 
 
  f(i); // calls f(int) 
  f(d); // calls f(double) 
 
  f(s); // now calls f(short)  
 
  f(r); // calls f(double) -- type conversion 
 
  return 0; 
} 
 
void f(int x) { 
  cout << "Inside f(int): " << x << "\n"; 
} 
 
void f(short x) { 
  cout << "Inside f(short): " << x << "\n"; 
} 
 
void f(double x) { 
  cout << "Inside f(double): " << x << "\n"; 
}
Inside f(int): 1
Inside f(double): 1.1
Inside f(short): 9
Inside f(double): 1.5