27 Kasım 2014 Perşembe

Name Hiding

Name Hiding Nedir?
Eğer bir sınıf ve metod aynı isime sahipse, sınıf görünmez hale gelir. Bu özellik C++ dilinin ne kadar karmaşık bir hal alabileceğine iyi bir örnek.

A class name (9.1) or enumeration name (7.2) can be hidden by the name of a variable, data member, function, or enumerator declared in the same scope.

Örnek:
void test(){cout<<"function"<<endl;}

struct test
{
    test(){cout<<"class"<<endl;}
};

int main()
{
    test();//function çıktısı verir.
    return 0;
}

Bir başka örnekte x yine function olarak algılanıyor.
#include <iostream>

std::string x();

int main() {

    std::cout << "x: " << x << std::endl;//1 verir
    return 0;
}