Ich habe folgenden Code geschrieben und für Zeiger zeigt es korrekte Argumenttyp, aber wenn ich Referenz verwenden, zeigt es nur int
und keine const
. Warum?Warum ist das Argument der Referenzvorlage nicht const?
template <typename T>
void increment(T& x)
{
std::cout << "Argument type is : " << typeid(x).name() << std::endl;
//x = x + 1;
}
template <typename T>
void increment(T* x)
{
std::cout << "Argument type is : " << typeid(x).name() << std::endl;
//x = x + 1;
}
int main()
{
const int x = 0;
const int y = x;
increment(x);
increment(&y);
}
Ausgang:
Argument type is : int
Argument type is : int const *
Bitte, können Sie erklären, warum const
nicht mit Bezug gezeigt wird?
Weil 'const' ein Qualifier ist, kein Typ? – arrowd
Warum zeigt es dann dieses Qualifikationsmerkmal für Zeigerargumente an? – Kapil
Versuchen Sie Folgendes zu drucken: 'typeid (int const) .name()'. – Nawaz