Перегрузка операторов C++. Присвоение массива.

Рейтинг: 1Ответов: 2Опубликовано: 05.03.2015

В C++11 классу vector можно присвоить массив вида

std::vector < int > a = {1, 2, 3, 4, 5}

Как требуется перегрузить оператор присваивания для достижения такого эффекта (если это вообще возможно)?

Ответы

▲ 2Принят

В общем структуры и так поддерживают подобное поведение изначально.

А если нужно добавить такое поведение в свой класс, то вот пример небольшой:

#include <iostream>
#include <initializer_list>

class A
{
public:
    A(std::initializer_list<int> list)
    {
        for(auto& item : list)
        {
            std::cout << "item=" << item << "\n";
        }
    }
};

int main()
{
    A a{23,321,321,3,213,213,12};
};

Пример взял вот здесь: http://scrutator.me/post/2012/11/16/new-ctors-p1.aspx

▲ 1

В примере не присваивание а инициализация. Нельзя написать так:

std::vector < int > a;
a = {1, 2, 3, 4, 5};

Почувствуйте разницу.