Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

Войти
Регистрация
Восстановить пароль
 
rikimaru2013
C++ Game Dev
2440 / 1133 / 240
Регистрация: 30.11.2013
Сообщений: 3,690
#1

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

01.11.2015, 01:26. Просмотров 213. Ответов 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
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Оператор взятия адреса (C++):

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

Оператор взятия адреса (&) - C++
while (true) { int *temp = new int(13); std::cout &lt;&lt; temp &lt;&lt; &quot; &quot;; std::cout &lt;&lt; &amp;temp &lt;&lt; std::endl; } Создаю каждый раз...

Указатели, Оператор взятия адреса - C++
Вообщем, ребят, недавно разбирался с указателями в С++ и столкнулся с проблемой понимания следующих вопросов: void Concat(string *str)...

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

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

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

3
Kuzia domovenok
2032 / 1876 / 169
Регистрация: 25.03.2012
Сообщений: 6,469
Записей в блоге: 1
01.11.2015, 01:45 #2
просто надо меньше париться и читать всякие стандарты. какая разница, что там написано про взятие адреса?
0
DrOffset
7377 / 4454 / 1009
Регистрация: 30.01.2014
Сообщений: 7,304
01.11.2015, 02:44 #3
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
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
Ушел
Эксперт CЭксперт С++
13557 / 7707 / 872
Регистрация: 27.09.2012
Сообщений: 18,996
Записей в блоге: 3
Завершенные тесты: 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
01.11.2015, 09:36
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.11.2015, 09:36
Привет! Вот еще темы с ответами:

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

Операция взятия индексан - C++
Добрый день)) //--------------------------------------------------------------------------- #pragma hdrstop #include...

Операция взятия остатков от деления на цело. - C++
Всем доброго времени суток. я начинающий прогер помогите решить задачу. Дано двузначное число, вывести сначала его левое число десятки...

Почему операция взятия корня такая ресурсоемкая? - C++
Здравствуйте! Просветите в вопросе. 1. Какие методы используются для его взятия? 2. Как есть пути оптимизации? Заранее спс!


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

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

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