Далее приведены правила выбора реализации перегружаемых функций в C++ (тип, указанный слева от стрелки, преобразуется к типу, указанному справа).
- преобразования, выполняющиеся по умолчанию
Array -> pointer
T -> const T
- стандартные преобразования
int -> double
double -> int
производный тип -> базовый
- расширяющие разрядности преобразования
int -> double
short -> int
float -> double

Формат перегрузки операции приведения типа:
operator <имя нового типа> ();


Пример 1
char c = 256; // из-за потери 8 старших битов c ='\0';

double d = 0.999999999999999999;
long n = d; // n=0;

long m = 32768; // двоичное представление числа 32768 содержит единственную единицу - в 15 разряде
int k = m; // k = -32768, т.к. 15-й разряд для int является знаковым
unsigned u = m; // m = 32768
Пример 2
void g (int);

double d = 1.234;
char *str = "Строка";

g(d); // допустимо, т.к. существует неявное преобразование double к int
g(str); // ошибка
Пример 3

monstr::operator int() {return health;}
monstr Vasia;
cout<<int(Vasia);