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

Почему обращение к методам осуществляется через оператор прямого доступа, а не через оператор указателей->? - C++

Восстановить пароль Регистрация
 
Игорюня
 Аватар для Игорюня
20 / 16 / 7
Регистрация: 07.12.2013
Сообщений: 244
06.02.2014, 12:03     Почему обращение к методам осуществляется через оператор прямого доступа, а не через оператор указателей->? #1
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <iostream>
using namespace std;
 
class random
{
public:
    void Set(int b){a=b;}
    int Get(){return a;}
private:
    int a;
};
 
int main()
{
    random *arr=new random[10];
    arr[3].Set(5);
    cout<<arr[3].Get()<<endl;
    delete[] arr;
        system("pause");
}
Собсно,интересует,почему обращение к методам осуществляется через оператор прямого доступа,а не через оператор указателей ->
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.02.2014, 12:03     Почему обращение к методам осуществляется через оператор прямого доступа, а не через оператор указателей->?
Посмотрите здесь:

C++ Написать программу, содержащую оператор оператор for для счета от 2 до 5 через 1
Обращение к динамической структуре через массив указателей C++
Обращение к элементам линейного списка через элементы массива указателей C++
Написать через оператор while C++
Обращение к методам класса через указатель на экземпляр класса C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Tulosba
:)
Эксперт С++
4378 / 3221 / 297
Регистрация: 19.02.2013
Сообщений: 9,044
06.02.2014, 12:05     Почему обращение к методам осуществляется через оператор прямого доступа, а не через оператор указателей->? #2
Цитата Сообщение от Игорюня Посмотреть сообщение
интересует,почему обращение к методам осуществляется через оператор прямого доступа,а не через оператор указателей ->
О какой строке кода речь?
Ilot
Модератор
Эксперт С++
1767 / 1142 / 223
Регистрация: 16.05.2013
Сообщений: 3,020
Записей в блоге: 5
Завершенные тесты: 1
06.02.2014, 12:05     Почему обращение к методам осуществляется через оператор прямого доступа, а не через оператор указателей->? #3
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Потому, что оператор [] возвращает ссылку на объект, а не указатель.
Игорюня
 Аватар для Игорюня
20 / 16 / 7
Регистрация: 07.12.2013
Сообщений: 244
06.02.2014, 12:09  [ТС]     Почему обращение к методам осуществляется через оператор прямого доступа, а не через оператор указателей->? #4
Цитата Сообщение от Ilot Посмотреть сообщение
Потому, что оператор [] возвращает ссылку на объект, а не указатель.
То есть такое обращение может быть только при динамическом массиве?
Tulosba
:)
Эксперт С++
4378 / 3221 / 297
Регистрация: 19.02.2013
Сообщений: 9,044
06.02.2014, 12:13     Почему обращение к методам осуществляется через оператор прямого доступа, а не через оператор указателей->? #5
Цитата Сообщение от Игорюня Посмотреть сообщение
То есть такое обращение может быть только при динамическом массиве?
Динамический массив тут вообще не при чем. У вас массив элементов типа random, а не random*. Поэтому и точка вместо стрелочки.
Игорюня
 Аватар для Игорюня
20 / 16 / 7
Регистрация: 07.12.2013
Сообщений: 244
06.02.2014, 12:21  [ТС]     Почему обращение к методам осуществляется через оператор прямого доступа, а не через оператор указателей->? #6
Цитата Сообщение от Tulosba Посмотреть сообщение
Динамический массив тут вообще не при чем. У вас массив элементов типа random, а не random*. Поэтому и точка вместо стрелочки.
random *pointer=new random;

Почему же в этом случае возвращается указатель?Извините за дотошность.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.02.2014, 12:26     Почему обращение к методам осуществляется через оператор прямого доступа, а не через оператор указателей->?
Еще ссылки по теме:

C++ Проверка выделения памяти указателей через оператор new
Получение доступа к методам дочернего класса через указатель на родительский, хранимый в vector C++
Обращение к полям и методам класса через объект C++

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

Или воспользуйтесь поиском по форуму:
Tulosba
:)
Эксперт С++
4378 / 3221 / 297
Регистрация: 19.02.2013
Сообщений: 9,044
06.02.2014, 12:26     Почему обращение к методам осуществляется через оператор прямого доступа, а не через оператор указателей->? #7
Цитата Сообщение от Игорюня Посмотреть сообщение
Почему же в этом случае возвращается указатель?
А что по-вашему должно возвращаться? Имя статического массива тоже есть по сути указатель на первый элемент массива.

C++
1
2
int a[10] = {0,42};
std::cout << *(a + 1) << std::endl;// равносильно a[1]
Yandex
Объявления
06.02.2014, 12:26     Почему обращение к методам осуществляется через оператор прямого доступа, а не через оператор указателей->?
Ответ Создать тему
Опции темы

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