Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

[C++11] Semantyka słowa kluczowego auto.

Ostatnio zmodyfikowano 2013-06-10 23:09
Autor Wiadomość
akwes
Temat założony przez niniejszego użytkownika
[C++11] Semantyka słowa kluczowego auto.
» 2013-06-10 20:59:29
Witam.

Czytałem sobie na dokumentacji (» standard C++11auto) opis
auto
 i zastanowił mnie sposób deklaracji wskaźników za pomocą tego słowa.

C/C++
#include <iostream>
#include <typeinfo>

int main() {
   
    double liczba = 12.34;
   
    // z dokumentacji
    auto * wskaznik1a = new auto( liczba ); //Możliwe w C++11
    double * wskaznik1b = new double( liczba ); //Konieczne w C++
   
    // dopisek
    auto wsk = new auto( liczba );
   
    std::cout << typeid( wskaznik1a ).name() << "\n";
    std::cout << typeid( wskaznik1b ).name() << "\n";
    std::cout << typeid( wsk ).name() << "\n";
   
    // z dokumentacji
    auto ** wskaznik2a = new auto( & liczba ); //Możliwe w C++11
    double ** wskaznik2b = new double *( & liczba ); //Konieczne w C++
   
    // dopisek
    auto wsk2 = new auto( & liczba );
   
    std::cout << typeid( wskaznik2a ).name() << "\n";
    std::cout << typeid( wskaznik2b ).name() << "\n";
    std::cout << typeid( wsk2 ).name() << "\n";
   
    auto tab = new int[ 100 ];
    std::cout << typeid( tab ).name() << "\n";
   
    auto tab2 = new int[ 10 ][ 10 ];
    std::cout << typeid( tab2 ).name() << "\n";

Out:
double *
double *
double *
double * *
double * *
double * *
int *
int (*)[10]

Moje pytanie jest następujące:

Dlaczego
auto * wsk = new double;
 a nie całkowicie korzystając z dedukcji typu
auto wsk = new double;
?

Jest to jedynie wyraźna manifestacja typu wskaźnikowego dla osoby czytającej kod? Czy może w tej kwestii mówi coś standard?
P-85326
Elaine
» 2013-06-10 23:06:59
Jest to jedynie wyraźna manifestacja typu wskaźnikowego dla osoby czytającej kod?
Tak.
P-85358
akwes
Temat założony przez niniejszego użytkownika
» 2013-06-10 23:09:20
Dzięki za rozwianie niepewności.
P-85359
« 1 »
  Strona 1 z 1