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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
rikimaru2013
C++ Game Dev
 Аватар для rikimaru2013
2305 / 1021 / 232
Регистрация: 30.11.2013
Сообщений: 3,393
#1

Оператор взятия адреса - C++

01.11.2015, 01:26. Просмотров 179. Ответов 3
Метки нет (Все метки)

Доброй ночи,

оператор взятия адресса не перечислен среди Special member functions, но он реализуется компилятор по умолчанию, если его не реализовать явно.



C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <iostream>
using namespace std;
 
class A
{
};
class B
{
public:
    B* operator&()
    {
        cout << "Override operator&" << endl;
        return this;
    }
};
int main()
{
    A a;
    B b;
 
    &a;
    &b;
}
Собственно, что заставляет компилятор делать это если стандарт молчит
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.11.2015, 01:26     Оператор взятия адреса
Посмотрите здесь:

адреса C++
Класс, реализующий стек. Перегрузка операций взятия и извлечения элемента. C++
C++ Операция взятия остатков от деления на цело.
Операция взятия индексан C++
C++ есть функция из библиотеки string для взятия из строчки определенного символа?
C++ синонимы операций взятия адреса массива (arr и &arr)
C++ Оператор взятия адреса (&)
Как мне избежать взятия адреса у аргумента функции? C++
Как работает операция взятия адреса "&"? C++
C++ Перегрузить операторы взятия из потока и помещения в поток у класса
Оператор взятия адреса C++
Указатели, Оператор взятия адреса C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Kuzia domovenok
 Аватар для Kuzia domovenok
1886 / 1741 / 117
Регистрация: 25.03.2012
Сообщений: 5,916
Записей в блоге: 1
01.11.2015, 01:45     Оператор взятия адреса #2
просто надо меньше париться и читать всякие стандарты. какая разница, что там написано про взятие адреса?
DrOffset
6820 / 4031 / 924
Регистрация: 30.01.2014
Сообщений: 6,847
01.11.2015, 02:44     Оператор взятия адреса #3
Сообщение было отмечено автором темы, экспертом или модератором как ответ
rikimaru2013,
Вот аналогичный вопрос: http://stackoverflow.com/questions/2...mber-functions
Внутри есть ссылка на Мейерса:
A class declaring no operator& function(s) does NOT have them implicitly declared. Rather, compilers use the built-in address-of operator whenever "&" is applied to an object of that type. This behavior, in turn, is technically not an application of a global operator& function. Rather, it is a use of a built-in operator.
Croessmah
Модератор
Эксперт CЭксперт С++
 Аватар для Croessmah
12535 / 7097 / 797
Регистрация: 27.09.2012
Сообщений: 17,512
Записей в блоге: 2
Завершенные тесты: 1
01.11.2015, 09:36     Оператор взятия адреса #4
Цитата Сообщение от rikimaru2013 Посмотреть сообщение
Собственно, что заставляет компилятор делать это если стандарт молчит
в стандарте есть такое:
The meaning of the operators =, (unary) &, and , (comma), predefined for each type, can be changed for specific class and enumeration types by defining operator functions that implement these operators.
Yandex
Объявления
01.11.2015, 09:36     Оператор взятия адреса
Ответ Создать тему
Опции темы

Текущее время: 21:24. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru