Dlaczego ten kod działa? Zobacz hasło class
z przodu na argument funkcji f
? Co się zmieni, jeśli ją dodaję?Co to jest słowo kluczowe class przed argumentem funkcji?
struct A
{
int i;
};
void f(class A pA) // why 'class' here?
{
cout << pA.i << endl;
}
int main()
{
A obj{7};
f(obj);
return 0;
}
Więc tu 'class' jest taka sama jak' typename'? – Narek
@Narek: Nie. Spróbuj użyć 'typename' w tym przykładzie (lub w twoim), a zobaczysz, że się nie uda. –
Ta odpowiedź jest sformułowana nieco niepoprawnie. * Zawsze * możesz używać rozbudowanego specyfikatora typu. Jego głównym * przypadkiem użycia * jest jednak, gdy masz funkcję lub zmienną o identycznej nazwie. –