Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.50/6: Рейтинг темы: голосов - 6, средняя оценка - 4.50
Игорюня
20 / 16 / 11
Регистрация: 07.12.2013
Сообщений: 244
#1

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

06.02.2014, 12:03. Просмотров 1046. Ответов 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
Ответы с готовыми решениями:

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

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

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

Обращение к динамической структуре через массив указателей
При попытке обратиться к элементу динамической структуры через связанный с ним...

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

6
Tulosba
:)
Эксперт С++
4747 / 3241 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
06.02.2014, 12:05 #2
Цитата Сообщение от Игорюня Посмотреть сообщение
интересует,почему обращение к методам осуществляется через оператор прямого доступа,а не через оператор указателей ->
О какой строке кода речь?
0
Ilot
Эксперт С++
1828 / 1186 / 342
Регистрация: 16.05.2013
Сообщений: 3,127
Записей в блоге: 5
Завершенные тесты: 1
06.02.2014, 12:05 #3
Лучший ответ Сообщение было отмечено Игорюня как решение

Решение

Потому, что оператор [] возвращает ссылку на объект, а не указатель.
1
Игорюня
20 / 16 / 11
Регистрация: 07.12.2013
Сообщений: 244
06.02.2014, 12:09  [ТС] #4
Цитата Сообщение от Ilot Посмотреть сообщение
Потому, что оператор [] возвращает ссылку на объект, а не указатель.
То есть такое обращение может быть только при динамическом массиве?
0
Tulosba
:)
Эксперт С++
4747 / 3241 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
06.02.2014, 12:13 #5
Цитата Сообщение от Игорюня Посмотреть сообщение
То есть такое обращение может быть только при динамическом массиве?
Динамический массив тут вообще не при чем. У вас массив элементов типа random, а не random*. Поэтому и точка вместо стрелочки.
1
Игорюня
20 / 16 / 11
Регистрация: 07.12.2013
Сообщений: 244
06.02.2014, 12:21  [ТС] #6
Цитата Сообщение от Tulosba Посмотреть сообщение
Динамический массив тут вообще не при чем. У вас массив элементов типа random, а не random*. Поэтому и точка вместо стрелочки.
random *pointer=new random;

Почему же в этом случае возвращается указатель?Извините за дотошность.
0
Tulosba
:)
Эксперт С++
4747 / 3241 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
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

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

Написать через оператор while
Здравствуйте, возник такой вопрос. Написал совсем простенькую программу и...

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


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

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

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