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

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 16, средняя оценка - 4.81
Skirmisher
44 / 44 / 0
Регистрация: 23.05.2009
Сообщений: 92
#1

Конструктор - C++

29.07.2009, 23:29. Просмотров 2065. Ответов 32
Метки нет (Все метки)

Конструктор сбрасывающий экземпляр класса.
Что он из себя представляет?
Приведите примеры.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.07.2009, 23:29
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Конструктор (C++):

Не могу сделать чтобы класс содержал основной конструктор и конструктор копирования - C++
Разработать класс ThreeAngle для работы с плоскими треугольниками. В качестве членов-данных задаются длины трех сторон треугольника. Класс...

this(Всегда ли вызывается конструктор при не явной передачи объекта в конструктор) - C++
class Test { int i; public: void test(int i) { this -> i = i; } }; Конструктор Test::Test всегда вызывается...

Будет ли определен компилятором конструктор по умолчанию, если есть конструктор с дефолтным параметром? - C++
Добрый день, сразу к делу, есть некий класс class some { int x; public: some(int y = 1) : x(y) {} };

Не могу правильно сделать конструктор и конструктор копирования и принадлежность точки с заданными координатами треугольнику - C++
#include "stdafx.h" #include <iostream> #include <conio.h> #include <windows.h> #include <math.h> #include <algorithm> using...

Создать класс. Написать конструктор по умолчанию, конструктор с параметрами. Перегрузить операции «меньше» и «равно» - C++
Помогите пожалуйста, хоть с одним из заданий. 1. Создать класс. Написать конструктор по умолчанию, конструктор с параметрами....

Можно ли использовать конструктор по умолчанию и конструктор инициализации одновременно? - C++
Можно ли использовать конструктор по умолчанию и конструктор инициализации одновременно?

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Search..
Заказ софта
340 / 185 / 10
Регистрация: 26.05.2009
Сообщений: 863
30.07.2009, 00:57 #16
Цитата Сообщение от Rififi Посмотреть сообщение
Чьим министерством, Кокосовых островов? ((:
M128K145
Эксперт С++
8286 / 3505 / 143
Регистрация: 03.07.2009
Сообщений: 10,706
30.07.2009, 01:01 #17
Skirmisher, скажи номер страницы так проще будет
Skirmisher
44 / 44 / 0
Регистрация: 23.05.2009
Сообщений: 92
30.07.2009, 01:04  [ТС] #18
Цитата Сообщение от M128K145 Посмотреть сообщение
Skirmisher, скажи номер страницы так проще будет
252 страница. (Вариант 4, по классам) Раздел наследование.
M128K145
Эксперт С++
8286 / 3505 / 143
Регистрация: 03.07.2009
Сообщений: 10,706
30.07.2009, 01:08 #19
3. На основе класса «Элемент» описать производный класс «Память», представляющих собой триггер. Триггер имеет входы, соответствующие типу триггера (см. ниже вариант задания), и входы установки и сброса. Все триггеры считаются синхронными, сам синхровход в состав триггера не включается.
Поля:
• массив значений входов объекта класса (задается статически), в массиве учитываются все входы (управляющие и информационные);
• состояние на прямом выходе триггера;
• состояние на инверсном выходе триггера.
Методы:
• конструктор (по умолчанию сбрасывает экземпляр класса);
• конструктор копирования;
• деструктор;
• метод, задающий значение на входах экземпляра класса;
• методы, позволяющие опрашивать состояния отдельного входа экземпляра класса;
• метод, вычисляющий состояние экземпляра класса (по варианту задания) в зависимости от текущего состояния и значений на входах;
• метод, переопределяющий операцию == для экземпляров класса.
Skirmisher
44 / 44 / 0
Регистрация: 23.05.2009
Сообщений: 92
30.07.2009, 01:12  [ТС] #20
Цитата Сообщение от M128K145 Посмотреть сообщение
3. На основе класса «Элемент» описать производный класс «Память», представляющих собой триггер. Триггер имеет входы, соответствующие типу триггера (см. ниже вариант задания), и входы установки и сброса. Все триггеры считаются синхронными, сам синхровход в состав триггера не включается.
Поля:
• массив значений входов объекта класса (задается статически), в массиве учитываются все входы (управляющие и информационные);
• состояние на прямом выходе триггера;
• состояние на инверсном выходе триггера.
Методы:
• конструктор (по умолчанию сбрасывает экземпляр класса);
• конструктор копирования;
• деструктор;
• метод, задающий значение на входах экземпляра класса;
• методы, позволяющие опрашивать состояния отдельного входа экземпляра класса;
• метод, вычисляющий состояние экземпляра класса (по варианту задания) в зависимости от текущего состояния и значений на входах;
• метод, переопределяющий операцию == для экземпляров класса.
Вот да здесь и проблема!
Получается конструктор вместо того чтобы создавать экземпляр класса, должен выполнять роль деструктора, но это уже бред.
Rififi
2359 / 1054 / 44
Регистрация: 03.05.2009
Сообщений: 2,656
30.07.2009, 01:15 #21
я думаю что имеется в виду обнуление элементов класса

Добавлено через 33 секунды
... хотя конечно пути женской логики неисповедимы...
M128K145
Эксперт С++
8286 / 3505 / 143
Регистрация: 03.07.2009
Сообщений: 10,706
30.07.2009, 01:16 #22
конструктор, который создает обьект триггера в сброшеном состоянии
Monte-Cristo
2788 / 1374 / 30
Регистрация: 07.03.2009
Сообщений: 4,446
30.07.2009, 01:17 #23
Цитата Сообщение от M128K145 Посмотреть сообщение
конструктор (по умолчанию сбрасывает экземпляр класса);
это просто конструктор по умолчанию: т.е. конструктор без параметров, который инициализирует свойства класса значениями по-умолчанию.

Добавлено через 1 минуту 1 секунду
Пример:

C++
1
2
3
4
5
6
7
8
class Foo
{
private:
   int a;
   int b;
public:
   Foo(): a(0), b(0) {}
};
Skirmisher
44 / 44 / 0
Регистрация: 23.05.2009
Сообщений: 92
30.07.2009, 01:31  [ТС] #24
[QUOTE=Monte-Cristo;228394]это просто конструктор по умолчанию: т.е. конструктор без параметров, который инициализирует свойства класса значениями по-умолчанию.

Добавлено через 1 минуту 1 секунду
Пример:
Я так понимаю для того, чтобы сбросить экземпляр класса должен быть уже создан, а если в параметрах указан экземпляр этого же класса он уже не является простым конструктором, а является конструктором копирования. Что такое конструктор по умолчанию я знаю, однако о конструкторе сбрасывающем экземпляр класса никогда не слышал(.
Monte-Cristo
2788 / 1374 / 30
Регистрация: 07.03.2009
Сообщений: 4,446
30.07.2009, 01:33 #25
Skirmisher, не обязательно копирования. Конструктор копирования создается автоматически, даже если он не указан явно.
Skirmisher
44 / 44 / 0
Регистрация: 23.05.2009
Сообщений: 92
30.07.2009, 01:49  [ТС] #26
Цитата Сообщение от Monte-Cristo Посмотреть сообщение
Skirmisher, не обязательно копирования. Конструктор копирования создается автоматически, даже если он не указан явно.
Т.е. если например в параметрах указан экземпляр этого же класса, то это не будет конструктор копирования?
Например: имеется такой код:
C++
1
2
3
4
5
6
Monstr::Monstr(Monstr &monst)
{
     monstr.name="";  //Сбрасываем имя объекта
     monstr.health=100; //Сбрасываем к 100 количество жизней
     monstr.ammo=200; //Сбрасываем к 200 уровень брони
}
C++
1
2
3
4
5
6
7
8
9
10
class Monstr
{
    public:
         char *name;
         int health;
         int ammo;
    public:
         Monstr(char nameStr="Ork", int healthD=100, int ammoD=250){name=nameStr; health=healthD; ammo=ammoD};
         Monstr(Monstr &monstr);
}
Разве не будет считаться метод:
Monstr(Monstr &monstr);
конструктором копирования?
Monte-Cristo
2788 / 1374 / 30
Регистрация: 07.03.2009
Сообщений: 4,446
30.07.2009, 01:51 #27
Цитата Сообщение от Skirmisher Посмотреть сообщение
конструктором копирования?
нет. это уже конструктор с одним параметром.
Skirmisher
44 / 44 / 0
Регистрация: 23.05.2009
Сообщений: 92
30.07.2009, 02:36  [ТС] #28
Цитата Сообщение от Monte-Cristo Посмотреть сообщение
нет. это уже конструктор с одним параметром.
А когда, тогда конструктор класса, содержащий экземпляр своего же класса не является конструктором копирования?

Добавлено через 35 минут 2 секунды
Цитата Сообщение от M128K145 Посмотреть сообщение
конструктор, который создает обьект триггера в сброшеном состоянии
А это что еще за конструктор? Приведи пример пожалуйста.
M128K145
Эксперт С++
8286 / 3505 / 143
Регистрация: 03.07.2009
Сообщений: 10,706
30.07.2009, 11:31 #29
Skirmisher, где-то так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
class Trigger
{
public:
    short c, d, q0, q1;
public:
    Trigger();
};
 
Trigger::Trigger()
{
    c = 0;
    d = 0;
}
Я не силен в схемотехнике, поэтому присвоил по нулю каждому из входов
Monte-Cristo
2788 / 1374 / 30
Регистрация: 07.03.2009
Сообщений: 4,446
30.07.2009, 12:21 #30
Цитата Сообщение от Skirmisher Посмотреть сообщение
А когда, тогда конструктор класса, содержащий экземпляр своего же класса не является конструктором копирования?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <iostream>
using namespace std;
 
class Foo
{
private:
    int a;
    int b;
public:
    Foo(): a(0), b(0) {} // конструктор по-умолчанию
    void Set(int x, int y) { a = x; b = y; }
    void Show() { cout << a << "\t" << b << endl; }
};
 
int main() 
{
    Foo objA;       // активируется конструктор по-умолчанию
    objA.Set(5, 10);
    Foo objB(objA); // активируется конструктор копирования
    objB.Show();
    system("pause");
    return 0;
}
А вообще это спорный вопрос. В одной литературе это называется конструктор копирования по-умолчанию, в другой просто конструктор копирования.
Я же отношусь больше к варианту, что конструктор копирования - это продемонстрированный выше вариант. А если пользователь его перегрузит, я считаю его уже не копированием, так как в перегруженном уже могут выполнятся любые действеия, и копированием даже и не пахнуть.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
30.07.2009, 12:21
Привет! Вот еще темы с ответами:

Конструктор производного класса требует конструктор предка - C++
Выдаёт вот такую вот ошибку: no matching function for call to 'Cube::Cube()' class Cube { protected: int magInt; bool...

Конструктор инициализации, конструктор копирования, деструктор - C++
Я сделал почти задание по перегрузке операторов. Осталось одно, тоесть три: конструктор инициализации, конструктор копирования, деструктор....

Создать класс "Вектор" и реализовать конструктор по умолчанию, конструктор копирования и деструктор - C++
Всем доброго времени суток! нужна ваша помощь! нужно создать класс вектор и реализовать конструктор по умолчанию, копирования и...

Конструктор класса не видит конструктор по умолчанию другого класса - C++
Ошибка, естественно, в Classes.cpp, в строке 20. Ругается, что у класса TailNode нет конструктора по умолчанию, хотя он там, конечно, есть....


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
30.07.2009, 12:21
Ответ Создать тему
Опции темы

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