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

Перегрузка "opеrator =" и "{ }" для собственного класса - C++

Восстановить пароль Регистрация
 
Yadanilov
0 / 0 / 0
Регистрация: 03.05.2014
Сообщений: 23
03.05.2014, 23:07     Перегрузка "opеrator =" и "{ }" для собственного класса #1
Я пытаюсь создать класс Vector. Для задания элементов вектора хотелось бы использовать "opеrator =" и " { } ".
Возможно ли это?
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.05.2014, 23:07     Перегрузка "opеrator =" и "{ }" для собственного класса
Посмотрите здесь:

Перегрузка операторов для класса "множество целых чисел" C++
C++ Ошибка экземпляра класса: отсутствие ";" перед идентификатором "o_scenes_1"
C++ Разработать класс "Массив больших чисел", который состоит из объектов класса "Большие целые числа". Найти сумму элементов массива.
Создание объекта класса сразу после его описания (между "}" и ";") C++
C++ Класс "Дроби" и перегрузка операторов для этого класса
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11823 / 6802 / 769
Регистрация: 27.09.2012
Сообщений: 16,870
Записей в блоге: 2
Завершенные тесты: 1
03.05.2014, 23:18     Перегрузка "opеrator =" и "{ }" для собственного класса #2
Цитата Сообщение от Yadanilov Посмотреть сообщение
{ }
std::initializer_list
Melg
416 / 152 / 62
Регистрация: 23.09.2013
Сообщений: 306
03.05.2014, 23:20     Перегрузка "opеrator =" и "{ }" для собственного класса #3
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
#include <iostream>
 
class Vector {
public:
  Vector() {
    std::cout << "Default constructor call" << std::endl;
  }
 
  ~Vector() {
    std::cout << "Destructor call" << std::endl;
  }
 
  Vector(const Vector &vector) {
    std::cout << "Copy constructor call" << std::endl;
  }
 
  Vector(int a, int b, int c) {
    std::cout << "three ints constructor call" << std::endl;
  }
 
  Vector & operator = (const Vector &vector) {
    std::cout << "operator = call";
    if (this != &vector) {
 
      }
    return *this;
  }
};
 
int main(int argc, char **argv) {
  std::cout << "main" << std::endl;
  Vector vector = {1,2,3};
  Vector vector1 = vector;
  Vector vector2(vector);
  return 0;
}
Только для компилятора с поддержкой с++11
Yadanilov
0 / 0 / 0
Регистрация: 03.05.2014
Сообщений: 23
04.05.2014, 17:46  [ТС]     Перегрузка "opеrator =" и "{ }" для собственного класса #4
Простите за ступор, но я не понял как реализовать именно вот это
C++
1
 Vector vector = {1,2,3};
У меня получилось сделать присваивание после объявления, то есть вот так:
C++
1
2
Vector a();
a = {1,233,3,2};
Yadanilov
0 / 0 / 0
Регистрация: 03.05.2014
Сообщений: 23
05.05.2014, 23:03  [ТС]     Перегрузка "opеrator =" и "{ }" для собственного класса #5
C++
1
Vector vector = {1,2,3};
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11823 / 6802 / 769
Регистрация: 27.09.2012
Сообщений: 16,870
Записей в блоге: 2
Завершенные тесты: 1
05.05.2014, 23:07     Перегрузка "opеrator =" и "{ }" для собственного класса #6
Цитата Сообщение от Yadanilov Посмотреть сообщение
после объявления
Цитата Сообщение от Yadanilov Посмотреть сообщение
Vector a();
это, кстати, не создание объекта, а объявление функции.
0x10
2425 / 1597 / 232
Регистрация: 24.11.2012
Сообщений: 3,919
06.05.2014, 07:17     Перегрузка "opеrator =" и "{ }" для собственного класса #7
Цитата Сообщение от Melg Посмотреть сообщение
Vector(int a, int b, int c) {
Цитата Сообщение от Melg Посмотреть сообщение
Vector vector = {1,2,3};
Для любого возможного числа элементов будете отдельный конструктор писать?
Croessmah
06.05.2014, 07:18
  #8

Не по теме:

Цитата Сообщение от 0x10 Посмотреть сообщение
Для любого возможного числа элементов будете отдельный конструктор писать?
что нам стоит дом построить?

MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.05.2014, 09:48     Перегрузка "opеrator =" и "{ }" для собственного класса
Еще ссылки по теме:

Перегрузка оператора "++" и "--" в чем может быть причина нарушение прав доступа? C++
Перегрузка оператора "++" и "--" , компилирует, но при запуске программы - ошибка C++
Класс "Матрица". Перегрузка оператора "минус" C++

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

Или воспользуйтесь поиском по форуму:
Ev[G]eN
Эксперт С++
 Аватар для Ev[G]eN
5093 / 1531 / 381
Регистрация: 23.01.2011
Сообщений: 3,148
06.05.2014, 09:48     Перегрузка "opеrator =" и "{ }" для собственного класса #9
Сообщение было отмечено автором темы, экспертом или модератором как ответ
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
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
#include <iostream>
 
template <class vectorType>
class vector
{
    private:
        size_t vectorSize;
        vectorType *ptrVector;
 
    public:
        vector()
        {
            vectorSize = 0;
            ptrVector = nullptr;
        }
 
        vector(const vector &copyVector)
        {
            vectorSize = copyVector.vectorSize;
            ptrVector = new vectorType [vectorSize];
            for (size_t i = 0; i < vectorSize; i++) {
                ptrVector[i] = copyVector.ptrVector[i];
            }
        }
 
        vector(size_t _vectorSize, vectorType initializedValue = 0)
        {
            vectorSize = _vectorSize;
            ptrVector = new vectorType [vectorSize];
            for (size_t i = 0; i < vectorSize; i++) {
                ptrVector[i] = initializedValue;
            }
        }
 
        vector(std::initializer_list <vectorType> list)
        {
            size_t i = 0;
            vectorSize = list.size();
            ptrVector = new vectorType[vectorSize];
            for (auto iterator : list) {
                ptrVector[i++] = iterator;
            }
        }
 
        size_t size()
        {
            return vectorSize;
        }
 
        vector &operator = (const vector &copyVector)
        {
            vectorSize = copyVector.vectorSize;
            ptrVector = new vectorType[vectorSize];
            for (size_t i = 0; i < vectorSize; i++) {
                ptrVector[i] = copyVector.ptrVector[i];
            }
        }
 
        vectorType &operator [] (size_t index) {
            return ptrVector[index];
        }
 
        ~vector()
        {
            delete [] ptrVector;
            ptrVector = nullptr;
        }
};
 
int main()
{
    vector <int> firstVector = { 1, 2, 3, 4, 5, 6 };
    std::cout << "First vector: " << std::endl;
    for (size_t i = 0; i < firstVector.size(); i++) {
        std::cout << firstVector[i] << ' ';
    }
    std::cout << std::endl;
 
    vector <int> secondVector(firstVector);
    std::cout << "Second vector: " << std::endl;
    for (size_t i = 0; i < secondVector.size(); i++) {
        std::cout << secondVector[i] << ' ';
    }
    std::cout << std::endl;
 
    vector <int> thirdVector = secondVector;
    std::cout << "Third vector: " << std::endl;
    for (size_t i = 0; i < thirdVector.size(); i++) {
        std::cout << thirdVector[i] << ' ';
    }
    std::cout << std::endl;
 
    std::system("pause");
    return 0;
}
Yandex
Объявления
06.05.2014, 09:48     Перегрузка "opеrator =" и "{ }" для собственного класса
Ответ Создать тему
Опции темы

Текущее время: 09:40. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru