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

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

Войти
Регистрация
Восстановить пароль
 
Игорюня
20 / 16 / 7
Регистрация: 07.12.2013
Сообщений: 244
#1

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

06.02.2014, 12:03. Просмотров 937. Ответов 6
Метки нет (Все метки)

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

Проверка выделения памяти указателей через оператор new - C++
И так есть некая структура, экземпляр которой определён как: var ***v; Изначально заполняю экземпляр: v = new var**; // создание...

Написать программу, содержащую оператор оператор for для счета от 2 до 5 через 1 - C++
В С++ я ноль, помогите пожалуйста написать прогу Написать программу, содержащую оператор оператор for для счета от 2 до 5 через 1 ...

Обращение к полям и методам класса через объект - C++
есть класс TEditor (методы класса обязательно должны создавать новый объект и возвращать его, до сих пор не могу понять зачем - требование...

Обращение к динамической структуре через массив указателей - C++
При попытке обратиться к элементу динамической структуры через связанный с ним элемент массива указателей выдаёт ошибку (со строчки 73): ...

Обращение к элементам линейного списка через элементы массива указателей - C++
Вот полная версия программы. Компилятор не выдаёт ошибок, но при выполнении, судя по всему, на строчке 278, при попытке обратится к...

Получение доступа к методам дочернего класса через указатель на родительский, хранимый в vector - C++
Была подобная тема с list'ом, но решение, предложенное там, мне не помогло. Соль проблемы заключается в следующем: имеется vector,...

6
Tulosba
:)
Эксперт С++
4396 / 3232 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
06.02.2014, 12:05 #2
Цитата Сообщение от Игорюня Посмотреть сообщение
интересует,почему обращение к методам осуществляется через оператор прямого доступа,а не через оператор указателей ->
О какой строке кода речь?
0
Ilot
Модератор
Эксперт С++
1823 / 1181 / 232
Регистрация: 16.05.2013
Сообщений: 3,118
Записей в блоге: 5
Завершенные тесты: 1
06.02.2014, 12:05 #3
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
Потому, что оператор [] возвращает ссылку на объект, а не указатель.
1
Игорюня
20 / 16 / 7
Регистрация: 07.12.2013
Сообщений: 244
06.02.2014, 12:09  [ТС] #4
Цитата Сообщение от Ilot Посмотреть сообщение
Потому, что оператор [] возвращает ссылку на объект, а не указатель.
То есть такое обращение может быть только при динамическом массиве?
0
Tulosba
:)
Эксперт С++
4396 / 3232 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
06.02.2014, 12:13 #5
Цитата Сообщение от Игорюня Посмотреть сообщение
То есть такое обращение может быть только при динамическом массиве?
Динамический массив тут вообще не при чем. У вас массив элементов типа random, а не random*. Поэтому и точка вместо стрелочки.
1
Игорюня
20 / 16 / 7
Регистрация: 07.12.2013
Сообщений: 244
06.02.2014, 12:21  [ТС] #6
Цитата Сообщение от Tulosba Посмотреть сообщение
Динамический массив тут вообще не при чем. У вас массив элементов типа random, а не random*. Поэтому и точка вместо стрелочки.
random *pointer=new random;

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

C++
1
2
int a[10] = {0,42};
std::cout << *(a + 1) << std::endl;// равносильно a[1]
1
06.02.2014, 12:26
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.02.2014, 12:26
Привет! Вот еще темы с ответами:

Написать через оператор while - C++
Здравствуйте, возник такой вопрос. Написал совсем простенькую программу и вроде бы всё хорошо, но тут возникла некоторая обходимость. ...

Оператор присваивания через конструктор - C++
Здравствуйте! Насколько плохо (или совсем не плохо) реализовывать операторы присваивания через соответствующие конструкторы с помощью...

Обращение к методам класса через указатель на экземпляр класса - C++
Добрый день. Не могу осилить проблему: Описан абстрактный класс. Описаны наследники этого класса уже без абстрактности. Описан...

как через оператор else закончить программу?? - C++
я пишу тест - курсовую и не знаю как предотвратить лишние нажатия enter'a помогите плиз)))


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

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

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