Вопрос по использованию Typedef в C ++ - PullRequest
0 голосов
/ 07 июня 2011

Я написал следующий фрагмент кода на кодовой панели, но я не понимаю, как / почему он должен компилироваться.

#include<iostream>

using namespace std;

typedef double dObject;
typedef int iObject;
typedef void (*swapfuncptr)(dObject, dObject);

void swap(dObject a,dObject b) {
cout << a << " " << b << endl;
dObject tmp;
tmp = a;
a = b;
b = tmp;
cout << a << " " << b << endl;
}
int main() {

double a = 7.5, b = 5.3;
swapfuncptr swapptr1;
swapptr1 = &swap;
swapptr1(a, b);

int c = 3, d = 2;
swapfuncptr swapptr2;
swapptr2 = &swap;
swapptr2(c, d);

swapfuncptr swapptr3;
swapptr3 = &swap;
swapptr3('r', 'd');
return 0;
}

Так что dobject предназначен только для удвоений, так как функции с целочисленными параметрами также работают. Я не понимаю, как это работает.

Может кто-нибудь объяснить, пожалуйста.

Спасибо S

1 Ответ

4 голосов
/ 07 июня 2011

int неявно конвертируется в double. Создание typedef для double не меняет этого.

...