Jaka jest różnica między „::” „.” A „->” w c ++ [duplikat]

Możliwy duplikat:
Kiedy używam kropki, strzałki lub podwójnego dwukropka w odniesieniu do członków klasy w C ++?

Stworzyłem klasę o nazwie Kwadrat i mam w środku trzy pola int. Bloki kodu dają mi radę, że mogę dostać się do pola obiektu przez::, . i->. Strzałka działa tylko, ale dlaczego? Jaka jest różnica między tymi trzema?

#include <iostream>

using namespace std;

class Kwadrat{
public:
int val1, val2, val3;
    Kwadrat(int val1, int val2, int val3)
    {
        this->val1 = val1;
        //this.val2 = val2;
        //this::val3 = val3;
    }
};

int main()
{
    Kwadrat* kwadrat = new Kwadrat(1,2,3);
    cout<<kwadrat->val1<<endl;
    cout<<kwadrat->val2<<endl;
    cout<<kwadrat->val3<<endl;
    return 0;
}

questionAnswers(7)

yourAnswerToTheQuestion