Wat doet -> bedoel in C++?

Mogelijke duplicaten:
Wat is het verschil tussen de punt (.) operator en -> in C++?
Waarvoor is de pijloperator (->) synoniem in C++ ?

De kop zegt het al.

Wat betekent ->in C++?


Antwoord 1, autoriteit 100%

Het is om toegang te krijgen tot een lidfunctie of lidvariabele van een object via een pointer, in tegenstelling tot een reguliere variabele of verwijzing.

Bijvoorbeeld: bij een reguliere variabele of referentie gebruikt u de operator .om toegang te krijgen tot lidfuncties of lidvariabelen.

std::string s = "abc";
std::cout << s.length() << std::endl;

Maar als u met een aanwijzer werkt, moet u de operator ->gebruiken:

std::string* s = new std::string("abc");
std::cout << s->length() << std::endl;

Het kan ook overbelast zijn om een specifieke functie voor een bepaald objecttype uit te voeren. Slimme aanwijzers zoals shared_ptren unique_ptr, evenals STL-containeriterators, overbelasten deze operator om de native pointer-semantiek na te bootsen.

Bijvoorbeeld:

std::map<int, int>::iterator it = mymap.begin(), end = mymap.end();
for (; it != end; ++it)
    std::cout << it->first << std::endl;

Antwoord 2, autoriteit 75%

a->bbetekent (*a).b.

Als aeen pointeris, is a->bhet lid bwaarvan averwijst naar.

akan ook een aanwijzerachtig object zijn (zoals een vector<bool>‘s stub) die de operatoren overschrijft.

(als je niet weet wat een pointer is, heb je een andere vraag)


Antwoord 3, autoriteit 44%

  1. Toegangsoperator van toepassing op (a) alle aanwijzertypes, (b) alle typen die deze operator expliciet overbelasten
  2. Introducer voor het retourtype van een lokale lambda-expressie:

    std::vector<MyType> seq;
    // fill with instances...  
    std::sort(seq.begin(), seq.end(),
                [] (const MyType& a, const MyType& b) -> bool {
                    return a.Content < b.Content;
                });
    
  3. introductie van een trailing return-type van een functie in combinatie met de opnieuw uitgevonden auto:

    struct MyType {
        // declares a member function returning std::string
        auto foo(int) -> std::string;
    };
    

Antwoord 4, autoriteit 10%

x->y kan 2 dingen betekenen. Als x een aanwijzer is, dan betekent dit lid y van het object waarnaar x wordt verwezen.
Als x een object is met operator->() overbelast, dan betekent dit x.operator->().


Antwoord 5, autoriteit 5%

http://en.wikipedia.org/wiki/Operators_in_C_and_C%2B% 2B#Member_and_pointer_operators

a -> bis lid bvan object waarnaar wordt verwezen door a


Antwoord 6, autoriteit 3%

De operator ->, die uitsluitend wordt toegepast op aanwijzers, is nodig om het gespecificeerde veld of de opgegeven methode te verkrijgen van het object waarnaar door de aanwijzer wordt verwezen. (dit geldt ook voor structsalleen voor hun velden)

Als je een variabele ptrhebt gedeclareerd als een pointer, kun je deze beschouwen als (*ptr).field.

Een zijknooppunt dat ik toevoeg om pedante mensen blij te maken: ALS BIJNA ELKE OPERATOR kun je een andere semantiek van de operator definiëren door deze te overbelasten voor je lessen.


Antwoord 7, autoriteit 2%

lid b van object waarnaar wordt verwezen door a
a->b

Other episodes