2014-12-25 27 views
5

ile değerlendirildi İki bağımsız değişken türünü alabilen aşırı yüklenmiş bir işlev var: int ve double. Bir int veya double döndüren bir üçlü ile değerlendirdiğimde, her zaman double sürümünü kullanır. Neden?Aşırı yüklenmiş işlev, üçlü

#include<iostream> 
using namespace std; 

void f(int a) 
{ 
    cout << "int" << endl; 
} 

void f(double a) 
{ 
    cout << "double" << endl; 
} 

int main() 
{ 
    string a; 
    cin >> a; 
    f(a=="int" ? 3 : 3.14159); 
    return 0; 
} 
+1

[Lütfen bu cevaba bakınız] (http://stackoverflow.com/a/8535301/1729885). –

+0

olası bir kopyası [İade türü ':' (üçlü koşullu operatör)] (http://stackoverflow.com/questions/8535226/return-type-of-ternary-conditional-operator) – Anonymous

cevap

8

Üçlü operatör daima tip promosyon (tek türü içine) yapmak. Yani bir sonuç int ve diğeri iki kat ise, sonucu? operatör her zaman iki katına çıkar.

İlgili konular