2016-06-23 17 views
9

Znalazłem mylące zdanie na temat słowa kluczowego "używanie". Jeśli użyję klasy lub struktury, nie będzie konieczne korzystanie z funkcji w tej samej przestrzeni nazw, które przyjmują tę klasę lub strukturę jako argument. Podobnie jak kody poniżej.Co dokładnie robi słowo kluczowe "using" w języku C++?

namespace A 
{ 
    struct testData 
    { 
     int x; 
    }; 

    int testFunc(testData data) 
    { 
     return data.x; 
    } 
} 

#include <cstdio>; 

using A::testData; 

int main() 
{ 
    testData test = { 1 }; 
    printf("%d", testFunc(test)); 

    return 0; 
} 

Pomyślałem, że nie powinienem móc używać testFunc(), ponieważ używam tylko słowa kluczowego "using" dla testData. Jednak te kody działają dobrze.

Czy możesz mi powiedzieć, dlaczego to działa w ten sposób?

+2

[argument Zależnie wyszukiwania] (http://en.cppreference.com/w/cpp/language/adl). – BoBTFish

+0

@BoBTFish Rozumiem. Dziękuję bardzo. –

Odpowiedz

Powiązane problemy