Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

Войти
Регистрация
Восстановить пароль
 
Yadanilov
0 / 0 / 0
Регистрация: 03.05.2014
Сообщений: 23
#1

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

03.05.2014, 23:07. Просмотров 439. Ответов 8
Метки нет (Все метки)

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

В зависимости от времени года "весна", "лето", "осень", "зима" определить погоду "тепло", "жарко", "холодно", "очень холодно" - C++
В зависимости от времени года "весна", "лето", "осень", "зима" определить погоду "тепло", "жарко", "холодно", "очень холодно". Я так...

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

Реализовать классы "Воин", "Пехотинец", "Винтовка", "Матрос", "Кортик" (наследование) - C++
Разработать программу с использованием наследования классов, реализующую классы: − воин; − пехотинец(винтовка); − матрос(кортик). ...

Создать класс "Вентилятор" содержащий в себе классы: "Двигатель", "Контроллер", "Пульт управления" - C++
Помогите с кодом написания задачи, не понимаю как написать классы в классе. Нужно создать класс "вентилятор" содержащий в себе классы:...

Создать класс "Книга" с полями "название книги", "количество страниц", "год издания" - C++
Создать класс Книга поля: название книги,количество страниц,год издания методы: вычислить сколько лет книге и количество дней прошедших...

Создать абстрактный класс "Издание" и производные классы "Книга", "Статья", "Электронный ресурс" - C++
1. Создать абстрактный класс Издание с методами, позволяющими вывести на экран информацию об издании, а также определить является ли данное...

8
Croessmah
Ушел
Эксперт CЭксперт С++
13557 / 7707 / 872
Регистрация: 27.09.2012
Сообщений: 18,996
Записей в блоге: 3
Завершенные тесты: 1
03.05.2014, 23:18 #2
Цитата Сообщение от Yadanilov Посмотреть сообщение
{ }
std::initializer_list
1
Melg
538 / 159 / 64
Регистрация: 23.09.2013
Сообщений: 314
03.05.2014, 23:20 #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
1
Yadanilov
0 / 0 / 0
Регистрация: 03.05.2014
Сообщений: 23
04.05.2014, 17:46  [ТС] #4
Простите за ступор, но я не понял как реализовать именно вот это
C++
1
 Vector vector = {1,2,3};
У меня получилось сделать присваивание после объявления, то есть вот так:
C++
1
2
Vector a();
a = {1,233,3,2};
0
Yadanilov
0 / 0 / 0
Регистрация: 03.05.2014
Сообщений: 23
05.05.2014, 23:03  [ТС] #5
C++
1
Vector vector = {1,2,3};
0
Croessmah
Ушел
Эксперт CЭксперт С++
13557 / 7707 / 872
Регистрация: 27.09.2012
Сообщений: 18,996
Записей в блоге: 3
Завершенные тесты: 1
05.05.2014, 23:07 #6
Цитата Сообщение от Yadanilov Посмотреть сообщение
после объявления
Цитата Сообщение от Yadanilov Посмотреть сообщение
Vector a();
это, кстати, не создание объекта, а объявление функции.
0
0x10
2482 / 1657 / 249
Регистрация: 24.11.2012
Сообщений: 4,126
06.05.2014, 07:17 #7
Цитата Сообщение от Melg Посмотреть сообщение
Vector(int a, int b, int c) {
Цитата Сообщение от Melg Посмотреть сообщение
Vector vector = {1,2,3};
Для любого возможного числа элементов будете отдельный конструктор писать?
0
Croessmah
06.05.2014, 07:18
  #8

Не по теме:

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

0
Ev[G]eN
iOS/Android Developer
Эксперт С++
5097 / 1535 / 381
Регистрация: 23.01.2011
Сообщений: 3,148
06.05.2014, 09:48 #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;
}
1
06.05.2014, 09:48
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.05.2014, 09:48
Привет! Вот еще темы с ответами:

Для класса "Футболист" создать производный класс "Нападающий" - C++
помогите плиз написать главную функцию и внешний метод и посмотрите ошибки класс ФУТБОЛИСТ с атрибутами: фамилия, название команды,...

Определить тип данных "Запись", имеющий поля "Фамилия", "Пол", "Зарплата" - C++
определить тип данных запись имеющий поля фамилия пол зарплата. определить массив из 10 записей. в программе ввести в массив данные и...

Наследуемым классом для комплексного числа объявить класс "радиус-вектор", имеющий данные "длина" и "угол" - C++
кто то напишите пожалуйста, вот программа: наследуемым классом для комплексного числа объявить класс &quot;радиус-вектор&quot;, имеющий данные...

Через ООП: Дать для числа наименование: "рубль", "рубля", "рублей"; - C++
Помогите пожалуйста с задачей. Могу сделать ее просто, но надо через ООП и у меня не получается. Дано натуральное число N (N&lt;20),...


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

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

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