Является ли в C++ перегрузка оператора стрелки исключительным случаем или она следует той же логике, что и для других опC++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Является ли в C++ перегрузка оператора стрелки исключительным случаем или она следует той же логике, что и для других оп

Сообщение Anonymous »

У меня вопрос относительно процесса перегрузки оператора стрелки. Из-за перегрузки создается впечатление, что это унарный оператор, а при использовании он выглядит как бинарный оператор. Возвращаемое значение также не интуитивно понятно. Возвращается только необработанный указатель.

Код: Выделить всё

#include 

template 
class Auto_ptr1
{
T* m_ptr {};
public:
// Pass in a pointer to "own" via the constructor
Auto_ptr1(T* ptr=nullptr)
:m_ptr(ptr)
{
}

// The destructor will make sure it gets deallocated
~Auto_ptr1()
{
delete m_ptr;
}

// Overload dereference and operator-> so we can use Auto_ptr1 like m_ptr.
T& operator*() const { return *m_ptr; }
T* operator->() const { return m_ptr; }
};

// A sample class to prove the above works
class Resource
{
public:
Resource() { std::cout sayHi() можно было бы ожидать, что все выражение ptr-> будет заменено необработанным указателем, но, очевидно, заменяется только ptr. Все, что следует далее, соответствует интуиции. Промежуточный шаг — вот что меня беспокоит. Является ли процесс перегрузки оператора стрелки исключительным случаем?
Это всего лишь теоретический вопрос. 

Подробнее здесь: [url]https://stackoverflow.com/questions/79338503/in-c-is-the-overloading-of-the-arrow-operator-an-exceptional-case-or-does-it[/url]
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»