разрешение перегрузки, cpp - PullRequest
       14

разрешение перегрузки, cpp

0 голосов
/ 21 сентября 2011

Я понимаю, что если есть несколько функций с одинаковыми именами и одинаковым количеством параметров, компилятор пытается найти наилучшее совпадение (я прав до сих пор?)

Чего я не понимаю, так эторазница между продвижением типов и преобразованием типов.

Скажите, у меня есть эта функция удаления: void foo (double x), а затем внутри main:

int x = 5;
foo(x);

Это считается преобразованием или продвижением?

Ответы [ 2 ]

2 голосов
/ 21 сентября 2011

Продвижение типа - это особый случай преобразования типа.

http://en.wikipedia.org/wiki/Type_conversion#Type_promotion

0 голосов
/ 21 сентября 2011

Ваш пример не будет работать

вам понадобится 2 метода для перегрузки

1.) Void foo (double x) {code code} и

2.) void foo (int x) {код метода}

Затем при запуске кода

int x = 5;

foo (5)

Среда компилятора или среды выполнения знает, какой метод вызывать, основываясь на вводимом вами типе ввода.

Если я хочу преобразовать int в тип double, который отличается.Я не уверен, какой язык вы используете, но в Java вы бы выполняли преобразование с использованием приведения типов

, это приведение типов и будет преобразовывать double в целое число.Вы потеряете десятичную часть, если она есть.

double d = 5;int i = (int) d;

Я думаю, это то, что вы спрашиваете.Если нет, уточните немного

...