Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
rikimaru2013
C++ Game Dev
2472 / 1141 / 348
Регистрация: 30.11.2013
Сообщений: 3,709
1

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

01.11.2015, 01:26. Просмотров 839. Ответов 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;
}
Собственно, что заставляет компилятор делать это если стандарт молчит
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.11.2015, 01:26
Ответы с готовыми решениями:

Оператор взятия адреса
struct A{}; в таком классе неявно объявлен 1 или 2 оператора взятия адреса(для...

Указатели, Оператор взятия адреса
Вообщем, ребят, недавно разбирался с указателями в С++ и столкнулся с проблемой...

Оператор взятия адреса (&)
while (true) { int *temp = new int(13); std::cout &lt;&lt; temp &lt;&lt; &quot; &quot;;...

Как мне избежать взятия адреса у аргумента функции?
Здравствуйте, написал код, который на одном компиляторе работает как надо, а на...

Синонимы операций взятия адреса массива (arr и &arr)
возможно коряво написал заголовок, да и сам вопрос банальный. после создании...

3
Kuzia domovenok
2395 / 2115 / 509
Регистрация: 25.03.2012
Сообщений: 7,612
Записей в блоге: 1
01.11.2015, 01:45 2
просто надо меньше париться и читать всякие стандарты. какая разница, что там написано про взятие адреса?
0
DrOffset
8919 / 4800 / 1176
Регистрация: 30.01.2014
Сообщений: 7,835
01.11.2015, 02:44 3
Лучший ответ Сообщение было отмечено rikimaru2013 как решение

Решение

rikimaru2013,
Вот аналогичный вопрос: http://stackoverflow.com/questions/28794443/c-special-member-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.
2
Croessmah
++Ͻ
14740 / 8422 / 1597
Регистрация: 27.09.2012
Сообщений: 20,714
Записей в блоге: 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.
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.11.2015, 09:36

Как работает операция взятия адреса "&"?
В каждой переменной есть адрес,так вот,когда операция взятия адреса берёт...

Почему при присваивании адреса массива не ставится знак '&' получения адреса
int main() { int a = { 2, 3 }; int* b; b = a; //Почему при присваивании...

Операция взятия индексан
Добрый день)) ...


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

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

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