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

Как работает ссылка с объектами, классами и перегруженным оператором [] - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Error: Unresolved external 'character::character(int)' http://www.cyberforum.ru/cpp-beginners/thread612793.html
Error: Unresolved external 'character::character(int)' referenced from C:\USERS\АДМИНИСТРАТОР\DOCUMENTS\RAD STUDIO\PROJECTS\MYPROJECTS\BLOODSWORD\WIN32\DEBUG\MAINM.OBJ вот такая ошибка. исходный код: void new_game() { int klas; hist::start(); std::cin>>klas; character pers(klas); std::cout<< pers.agility;
C++ Работа программы на С++ с вебом Вообщем, хочу научиться писать программы, которые бы брали информацию из интернета, например брали погоду с gismeteo.ru, сообщали о новом письме на почте, скачививали новое видео с ютуба. Вопрос один: что для этого надо изучать? Обязательно ли знать php? Не знал, в каком разделе лучше создать данную тему, а так-как фундаментом будет с++, решил создать в этом разделе. http://www.cyberforum.ru/cpp-beginners/thread612789.html
C++ Сортировка массива
В общем програ работает без выделении памяти нормально, но как только я добавил туда указатель на массив, после компиляции и запуска ее она падает с ошибкой, помогите найти ошибку в коде..... #include <stdafx.h> #include <iostream> #include <stdlib.h> using namespace System; using namespace std;
Необработанные исключения в MS Visual 2010 C++
Причиной чего может быть это сообщение и как его решить? У меня идет проверка в 3ех мерном массиве пересечения фигур и где то при проверке 9 с 11 вылетает меседж.
C++ Среднее значение полученных чисел, количество значений в массиве, превышающих среднее http://www.cyberforum.ru/cpp-beginners/thread612778.html
Вот решаю одну задачку из книги Праты: "Напишите программу, читающую в массив double до 10 значений пожертвований. Программа должна прекращать ввод при получении нечисловой величины. Она должна выдавать среднее значение полученных чисел, а также количество значений в массиве, превышающих среднее." Что-то нахимичил очень громоздкое, но вот пока проблема на счёт получения нечисловой величины. ...
C++ Глобальные и статические глобальные переменные Скажите, чем отличаются глобальные переменные от статических глобальных переменных? подробнее

Показать сообщение отдельно
Leeto
 Аватар для Leeto
7 / 7 / 0
Регистрация: 23.12.2011
Сообщений: 372
Записей в блоге: 1
24.06.2012, 14:54     Как работает ссылка с объектами, классами и перегруженным оператором []
Я тут решил поиграться с кодом и понял что совершенно не догоняю как работает ссылка &
Есть код нормально работающий:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
#include <sstream>
#include <iostream>
using namespace std;
class Point
{
protected:
    double m_x;                                
    double m_y;                                
public:
    
    Point(): m_x(0), m_y(0) {};                            
    Point(double new_x, double new_y) : m_x(new_x), m_y(new_y) {};
    friend ostream& operator << (ostream& os, const Point& point)
{
    return os << point.ToString();
}
   string ToString() const
{
      std::ostringstream os; 
    os << m_x << " , " << m_y; 
    std::string double_string = os.str();
 
    return "Point(" + double_string + ")";
}
};
class ArrayStack 
{    
    private:        
        
        Point* data;       
        int top;    
  public:        
      ArrayStack() :top(10), data(new Point[10]) {} 
      ArrayStack(int m_top) : top(m_top), data(new Point[m_top]) {} 
 
       int Size() 
    {
        return top+1;
    }
  Point& operator [] (int index)
  {
    if (index >= this->top)
    {
        cout << "i am hreeeee" << endl;
        return this->data[0];
    }
    return data[index];
}
};
int main()
{    
    ArrayStack s(5); 
        for(int i=0; i<s.Size()-1; i++) 
        {
        s[i] = Point(2*i, 2*i);
        cout << s[i] <<" index of element: " << i << endl;  
        }
    return 0;
}
OUTPUT:
Point (0,0 )
Point (1,1 )
Point (2,2 )
Point (3,3 )
Point (4,4 )

из строки номер 40 убрать ссылку , т.е.
C++
1
 Point operator [] (int index)
OUTPUT:
Point (0,0 )
Point (0,0 )
Point (0,0 )
Point (0,0 )
Point (0,0 )

Объясните, пожалуйста, быдло кодеру (т.е. мне) почему так происходит ((( желательно на пальцах
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 05:28. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru