Форум программистов, компьютерный форум CyberForum.ru

Перегрузка операторов -> <- - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Объекты класса http://www.cyberforum.ru/cpp-beginners/thread775804.html
Приветствую вас) Подскажите пожалуйста какая структура у класса и его объектов в c++bilder К примеру создание класса и 3-х объектов внутри. Мучаюсь уже сутки и не могу понять...а нормальной литературы найти не получается( Заранее спасибо!
C++ Ошибка с статическими членами класса Доброго времени суток, форумчане! Недавно пришлось вернуться с С# на С++ и я тут же заметил что я все забыл( Итак по сути: Есть определение класса: static class control { public: static double u0; http://www.cyberforum.ru/cpp-beginners/thread775797.html
C++ Найти все простые числа вида n^(n) + 1, меньше за 10^19
Мне надо создать программу. Задание вот такое: Найти все простые числа вида nn + 1, меншье за 1019.
Удалить элемент из односвязного списка C++
Есть односвязный список struct student { char last_name; char name; char date; int exams; double rate; };
C++ Заголовочный фаил <algorithm> (объясните что это такое) http://www.cyberforum.ru/cpp-beginners/thread775764.html
Здравствуйте, товарищи! Что такое #include <algorithm>? Какие она имеет функции или макросы? И если можно их предназначение?
C++ Динамические структуры. Составьте программу, которая создает очередь из произвольного количества элементов Задача 1.Составьте программу, которая создает очередь из произвольного количества элементов. Информационная часть динамического элемента должна состоять из двух целых чисел. Организуйте обработку каждого элемента: печать целых чисел из информационной части и их среднее значение. подробнее

Показать сообщение отдельно
silent_1991
Эксперт C++
4938 / 3014 / 149
Регистрация: 11.11.2009
Сообщений: 7,024
Завершенные тесты: 1
31.01.2013, 13:02     Перегрузка операторов -> <-
Dr.Urban, у оператора -> особая семантика. При его вызове он применяется рекурсивно к результату предыдущего вызова до тех пор, пока не найдёт нужный член в очередном объекте-результате. Пример:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
#include <iostream>
 
struct Value
{
    int value;
};
 
class Foo
{
public:
    int foo;
    
    Foo(int foo):
        m_foo{foo}
    {
    }
    
    Value *operator->()
    {
        return &m_foo;
    }
    
private:
    Value m_foo;
};
 
class Bar
{
public:
    Bar(int bar):
        m_bar(bar)
    {
    }
    
    Foo operator->()
    {
        return m_bar;
    }
    
private:
    Foo m_bar;
};
 
class Moo
{
public:
    Moo(int moo):
        m_moo(moo)
    {
    }
    
    Bar operator->()
    {
        return m_moo;
    }
    
private:
    Bar m_moo;
};
 
int main()
{
    Moo moo(10);
    
    // Пройдём по всей цепочке Moo->Bar->Voo->Value, в котором найдём поле value
    std::cout << moo->value << std::endl;
    
    return 0;
}
http://liveworkspace.org/code/DbtMi$7
 
Текущее время: 12:01. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru