Подтвердить что ты не робот

Что означает → означает в С++?

Возможные дубликаты:
В чем разница между оператором dot (.) и → в С++?
Что такое оператор-стрелка (- > ) синоним в С++?

В заголовке указано все.

Что означает в С++?

4b9b3361

Ответ 1

Он для доступа к функции-члену или переменной-члену объекта через указатель, в отличие от обычной переменной или ссылки.

Например: с регулярной переменной или ссылкой вы используете оператор . для доступа к функциям-членам или переменным-членам.

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

Но если вы работаете с указателем, вам нужно использовать оператор ->:

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

Он также может быть перегружен для выполнения определенной функции для определенного типа объекта. Смарт-указатели, такие как shared_ptr и unique_ptr, а также итераторы контейнеров STL, перегружают этот оператор, чтобы имитировать семантику родного указателя.

Например:

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

Ответ 2

a->b означает (*a).b.

Если a является указателем, a->b является членом b, из которого a указывает на.

a также может быть указателем вроде объекта (например, vector<bool> stub) переопределить операторы.

(если вы не знаете, что такое указатель, у вас есть другой вопрос)

Ответ 3

  • Оператор доступа, применимый к (а) всем типам указателей, (б) всем типам, которые явно перегружают этот оператор
  • Введение для возвращаемого типа локального лямбда-выражения:

    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;
                });
    
  • вводящий возвращаемый тип функции в сочетании повторно изобретенного auto:

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

Ответ 4

x- > y может означать 2 вещи. Если x является указателем, то это означает элемент y объекта, на который указывает x. Если x является объектом с оператором → () перегруженным, то это означает x.operator → ().

Ответ 5

член b объекта, на который указывает а- > б

Ответ 6

Оператор ->, который применяется исключительно для указателей, необходим для получения указанного поля или метода объекта, на который указывает указатель. (это относится также к structs только для их полей)

Если у вас есть переменная ptr, объявленная как указатель, вы можете представить ее как (*ptr).field.

Сторона node, которую я добавляю только для того, чтобы сделать педантичных людей счастливыми: КАК ПОЧТИ КАЖДЫЙ ОПЕРАТОР вы можете определить другую семантику оператора, перегрузив его для своих классов.