Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
FreakMurderer
-21 / 10 / 2
Регистрация: 21.11.2013
Сообщений: 120
1

Перегрузка оператора разыменования в умном указателе

20.10.2017, 20:58. Просмотров 715. Ответов 3
Метки нет (Все метки)

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <stdio.h>
 
template <class Type>
class SmartPointer{
private:
    Type* pointer;
public:
    SmartPointer(Type* p):pointer(p){};
    operator Type*() {return pointer;};
    Type& operator*()  { return *pointer; }
};
 
int main(void)
{
    int f = 7;
    SmartPointer<int> var(&f);
    int z = *var;
    printf("%d\n", z);
    return 0;
}
Объясните разницу между этим:
operator Type*() {return pointer;};
и этим
Type& operator*() { return *pointer; }

Почему и тот и тот правильно работает?
Где об этом подробно почитать?
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.10.2017, 20:58
Ответы с готовыми решениями:

Определение оператора разыменования
Здравствуйте. Подскажите, пожалуйста, по теории Из книги: classs Ptr{ //... X* operator-&gt;();...

Перегрузка оператора <<
Пишу класс My_String #include &lt;iostream&gt; const int MAX = 1000; class My_String { private:...

Перегрузка оператора +=
Создал класс дробь. Пытаюсь перегрузить оператор += (или -=, *=, /=) А компилятор выдаёт ошибку...

Перегрузка оператора ()
кто может подсказать как создать перегрузку что бы можно было работать с амссивввом в таком ввиде...

Перегрузка оператора ==
Я уже встречала подобный вопрос на этом форуме, но у меня всё равно что-то не получается Вот...

3
Pechkin80
19 / 18 / 7
Регистрация: 14.03.2014
Сообщений: 251
20.10.2017, 21:51 2
В первом случае приведение к указателю, а во втором ссылка на объект.
0
FreakMurderer
-21 / 10 / 2
Регистрация: 21.11.2013
Сообщений: 120
20.10.2017, 22:09  [ТС] 3
Все равно синтаксис не до конца понятен.
0
Peoples
1383 / 864 / 758
Регистрация: 06.02.2016
Сообщений: 2,283
Записей в блоге: 18
Завершенные тесты: 5
21.10.2017, 10:43 4
C++
1
2
operator Type*() {return pointer;};  // оператор приведение/преобразования типа, к указателю на Type
Type& operator*()  { return *pointer; }; // перегрузка оператора разыменования указателя
Добавлено через 12 минут
Ещё было бы неплохо добавить const
C++
1
2
operator Type*()const {return pointer;};
Type& operator*()  const { return *pointer; };
0
21.10.2017, 10:43
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.10.2017, 10:43

Перегрузка оператора []
Есть код перегрузки оператора для получения данных из массива. #include &lt;iostream&gt; class...

Перегрузка оператора +
Есть код: Есть перегрузка Date Date::operator+(int d) с перегрузкой , по заданию надо ещё раз...

Перегрузка оператора +=
У меня имеется структура и метод, который вызывается след образом: A.plus_and_minus(B); Есть...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru