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

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

Войти
Регистрация
Восстановить пароль
 
 
ninja2
230 / 186 / 7
Регистрация: 26.09.2012
Сообщений: 2,018
Завершенные тесты: 1
#1

Перегрузка operator[][][] - C++

31.08.2013, 15:32. Просмотров 975. Ответов 24
Метки нет (Все метки)

Здорова господа!!!

Как перегрузить operator[][] для класса или operator[][][] ???

Что нужно из него возвращать?
От что то пытался но не получается:
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
#include <iostream>
using std::cout;
using std::endl;
 
class cl
{
    int mass[3][3];
    int kkk;
public:
    cl(int a)
    {
        for(int i=0;i<3;i++)
            for(int j=0;j<3;j++)
                mass[i][j]=a;
    }
    void print()
    {
        for(int i=0;i<3;i++)
        {
            for(int j=0;j<3;j++)
                cout <<mass[i][j]<<' ';
            cout <<endl;
        }
    }
 
    int& operator[](int i)
    {
        if(kkk==-1)
        {
            kkk=i;
        }
        else if(kkk!=-1)
        {
            return mass[kkk][i];
        }
    }
};
 
int main()
{
    cl k(3);
    k.print();
 
    k[0][0]
 
    return 0;
}
Добавлено через 1 минуту
Что то мне кажется но нужно использовать оператор приведения типа чтоли????
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
31.08.2013, 15:32     Перегрузка operator[][][]
Посмотрите здесь:

Перегрузка operator+ - C++
при сложени myVector2 = myVector0 + myVector1; выодит сообщения &quot;конструктоор 0&quot; ...1,...2,....2(копирования) а потом деструктор 2,2,1,2...

Перегрузка operator<() - C++
#include &lt;QCoreApplication&gt; #include &lt;QDebug&gt; #include &lt;QVector&gt; class My { public: int a; void operator=(const...

Перегрузка operator= - C++
const Point&amp; operator= (const Point &amp;p) { if (this ==&amp;p) return *this; x = p.x; y = p.y; color = p.color; ...

Перегрузка operator new - C++
Столькнулся с такой проблемой: Есть класс Array, в его конструкторе создается массив int Array::Array(const size_t...

Перегрузка operator[]= - C++
Привет народ, вопрос такой - что и как нужно перегрузить в классе, чтобы работал синтаксис вида class ADE {..}; ADE a; ... a |=...

Перегрузка operator= - C++
Возможно ли перегрузить оператор= так, что бы можно было написать? val = {10, 20, 15};

перегрузка operator<< - C++
помогите отгадать в чет ошибка class MCL{ private: int x,y; public: friend ostream&amp; operator&lt;&lt;(ostream &amp;s, MCL &amp;c); }; ...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Nameless One
Эксперт С++
5769 / 3418 / 255
Регистрация: 08.02.2010
Сообщений: 7,444
01.09.2013, 13:26     Перегрузка operator[][][] #21
Цитата Сообщение от ninja2 Посмотреть сообщение
Тут еще непонятка возникла как от освобождать память для моего примера кода выше?
Точно так же, как выделял память, только в обратном порядке.
ninja2
230 / 186 / 7
Регистрация: 26.09.2012
Сообщений: 2,018
Завершенные тесты: 1
01.09.2013, 14:04  [ТС]     Перегрузка operator[][][] #22
Цитата Сообщение от Nameless One Посмотреть сообщение
Точно так же, как выделял память, только в обратном порядке.
Ну смотри отак я 100% уверен что память освободится:
C++
1
2
3
4
5
6
7
8
9
10
11
12
~cl()
    {
    for(int i=0;i<a;i++)
        {
            for(int j=0;j<b;j++)
            {
                delete[] p[i][j];
            }
            delete[] p[i];
        }
        delete[] p;
    };
А если я утак:
C++
1
2
3
4
~cl()
    {
        delete[] p;
    };
Мб все таки она так же автоматом удалится?????

Добавлено через 32 минуты
Ну так что господа вы наверно вопрос не поняли?

Щас я повторю!!!
От имеется у нас класс:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
class cl
{
    int*** p;
    int a;
    int b;
    int c;
public:
    cl(int aa,int bb, int cc)
        :a(aa),
        b(bb),
        c(cc)
    {
        p=new int** [a];
        for(int i=0;i<a;i++) 
        {
            p[i]=new int* [b];
            for(int j=0;j<b;j++)
                p[i][j]=new int[c];
        }
    }
};
В конструкторе выделяется память под трехмерный массив, как мне правильно определить деструктор???

От если я так определю то 100% освобождается память!!!
C++
1
2
3
4
5
6
7
8
9
10
11
12
    ~cl()
    {
    for(int i=0;i<a;i++)
        {
            for(int j=0;j<b;j++)
            {
                delete[] p[i][j];
            }
            delete[] p[i];
        }
        delete[] p;
    };
Ну зачем заморачиваться мб можно попроще отак сделать????
C++
1
2
3
4
    ~cl()
    {
        delete[] p;
    };
Да и все дела????
castaway
Эксперт С++
4880 / 3016 / 370
Регистрация: 10.11.2010
Сообщений: 11,076
Записей в блоге: 10
Завершенные тесты: 1
01.09.2013, 14:06     Перегрузка operator[][][] #23
Цитата Сообщение от ninja2 Посмотреть сообщение
Да и все дела????
Так ты удалишь лишь часть выделенной памяти. Не всю.
ForEveR
В астрале
Эксперт С++
7968 / 4730 / 320
Регистрация: 24.06.2010
Сообщений: 10,539
Завершенные тесты: 3
01.09.2013, 14:12     Перегрузка operator[][][] #24
Цитата Сообщение от ninja2 Посмотреть сообщение
Ну зачем заморачиваться
Этот вопрос стоило себе задать, до начала изучения С++.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.09.2013, 14:32     Перегрузка operator[][][]
Еще ссылки по теме:

Перегрузка operator+ - C++
Как сложить суму годовы продаж всех компаний? Можно использовать перегрузку оператора +? #include &lt;iostream.h&gt; #include &lt;math.h&gt; ...

Перегрузка operator[] - C++
Забыл как перегружать оператор для присваивания значений, а найти не могу ._. Чтобы было вот так: Class A { private: char...

Перегрузка operator->() - C++
Всем привет! Прохожу тему дескрипторов и меня удивляет как работает перегруженный operator-&gt;(). //какой то интерфейс struct...

Перегрузка operator+ - C++
Нужно сложить число с каждым елементом вектора, вот мой код: MyVectorClass.h namespace program { class MyVectorClass { ...

Перегрузка operator-> () - C++
здравствуйте, объясните пож. как работает operator-&gt; (). Что происходит при этом мне понятно, но непонятно как. template &lt;typename T&gt; ...


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

Или воспользуйтесь поиском по форуму:
Nameless One
Эксперт С++
5769 / 3418 / 255
Регистрация: 08.02.2010
Сообщений: 7,444
01.09.2013, 14:32     Перегрузка operator[][][] #25
Цитата Сообщение от ninja2 Посмотреть сообщение
Ну смотри отак я 100% уверен что память освободится:
Да.

Цитата Сообщение от ninja2 Посмотреть сообщение
Мб все таки она так же автоматом удалится?????
Нет.
Yandex
Объявления
01.09.2013, 14:32     Перегрузка operator[][][]
Ответ Создать тему
Опции темы

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