Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?
Opracował: Piotr DejaVu Szawdyński
Język C++

auto

[słowo kluczowe] Zastępczy typ zmiennej, który jest dedukowany na podstawie wartości jaką zmienna jest inicjalizowana.

Składnia

C/C++
auto nazwa_zmiennej = wartosc;

Opis szczegółowy

Słowo kluczowe auto w standardzie C++11 zmieniło swoje znaczenie w stosunku do standardu C++. Słowo kluczowe auto wg standardu C++11 oznacza zastępczy typ zmiennej, który zostanie wydedukowany na podstawie wartości za pomocą której zmienna zostanie zainicjalizowana.

Zmienna, której nadano zastępczy typ auto musi zostać zainicjalizowana w chwili jej tworzenia. W przeciwnym wypadku zostanie zwrócony błąd kompilacji.

Tworzona zmienna może zawierać modyfikatory takie jak const i volatile. Zmienna może być również wskaźnikiem (*), referencją (&) czy też referencją do r-wartości (&&).

Na zmiennych o typie zastępczym auto można używać słów kluczowych sizeof i typeid. Nie można natomiast odczytywać informacji za pomocą wspomianych słów kluczowych bezpośrednio ze słowa kluczowego auto - wystąpi wówczas błąd kompilacji.

Przykłady instruktażowe

Niniejsza sekcja zawiera krótkie fragmenty kodu, które pokazują niektóre sposoby użycia słowa kluczowego auto.

Korzystanie z sizeof

C/C++
auto liczba = 123;
printf( "%d\n", sizeof( liczba ) ); //Dozwolone - przykładowe standardowe wyjście: 4
printf( "%d\n", sizeof( auto ) ); //Niedozwolone - błąd kompilacji

Inicjalizacja stałą

C/C++
auto liczba1 = 123; //Możliwe w C++11 (auto będzie typu całkowitego)
int liczba2 = 123; //Konieczne w C i C++

Inicjalizacja zwracaną wartością

C/C++
std::map < std::string, std::vector < int > > mapa;
//... jakieś operacje na mapie
auto it1 = mapa.begin(); //Możliwe w C++11
std::map < std::string, std::vector < int > >::iterator it2 = mapa.begin(); //Konieczne w C++

Inicjalizacja wskaźnikiem

C/C++
double liczba = 12.34;

auto * wskaznik1a = new auto( liczba ); //Możliwe w C++11
double * wskaznik1b = new double( liczba ); //Konieczne w C++

auto ** wskaznik2a = new auto( & liczba ); //Możliwe w C++11
double ** wskaznik2b = new double *( & liczba ); //Konieczne w C++

Dodatkowe informacje

Więcej informacji znajdziesz pod adresem: http://msdn.microsoft.com​/en-us/library/dd293667.aspx.

Linki zewnętrzne