Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.50/16: Рейтинг темы: голосов - 16, средняя оценка - 4.50
45 / 45 / 1
Регистрация: 23.05.2009
Сообщений: 92

Конструктор

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

Студворк — интернет-сервис помощи студентам
Конструктор сбрасывающий экземпляр класса.
Что он из себя представляет?
Приведите примеры.
1
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
29.07.2009, 23:29
Ответы с готовыми решениями:

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

Конструктор класса, конструктор копирования запускается не тот который нужен
Есть такой конструктор: Neuron::Neuron(int iType_activation_funk) { this->iType_act = iType_activation_funk; switch...

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

32
MCSD: APP BUILDER
 Аватар для IT_Exp
8795 / 1074 / 104
Регистрация: 17.06.2006
Сообщений: 32,602
30.07.2009, 01:15
Студворк — интернет-сервис помощи студентам
я думаю что имеется в виду обнуление элементов класса

Добавлено через 33 секунды
... хотя конечно пути женской логики неисповедимы...
0
Эксперт JavaЭксперт С++
 Аватар для M128K145
8384 / 3618 / 419
Регистрация: 03.07.2009
Сообщений: 10,709
30.07.2009, 01:16
конструктор, который создает обьект триггера в сброшеном состоянии
0
 Аватар для Monte-Cristo
2816 / 1408 / 107
Регистрация: 07.03.2009
Сообщений: 4,446
30.07.2009, 01:17
Цитата Сообщение от 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) {}
};
0
45 / 45 / 1
Регистрация: 23.05.2009
Сообщений: 92
30.07.2009, 01:31  [ТС]
[QUOTE=Monte-Cristo;228394]это просто конструктор по умолчанию: т.е. конструктор без параметров, который инициализирует свойства класса значениями по-умолчанию.

Добавлено через 1 минуту 1 секунду
Пример:
Я так понимаю для того, чтобы сбросить экземпляр класса должен быть уже создан, а если в параметрах указан экземпляр этого же класса он уже не является простым конструктором, а является конструктором копирования. Что такое конструктор по умолчанию я знаю, однако о конструкторе сбрасывающем экземпляр класса никогда не слышал(.
0
 Аватар для Monte-Cristo
2816 / 1408 / 107
Регистрация: 07.03.2009
Сообщений: 4,446
30.07.2009, 01:33
Skirmisher, не обязательно копирования. Конструктор копирования создается автоматически, даже если он не указан явно.
0
45 / 45 / 1
Регистрация: 23.05.2009
Сообщений: 92
30.07.2009, 01:49  [ТС]
Цитата Сообщение от 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);
конструктором копирования?
0
 Аватар для Monte-Cristo
2816 / 1408 / 107
Регистрация: 07.03.2009
Сообщений: 4,446
30.07.2009, 01:51
Цитата Сообщение от Skirmisher Посмотреть сообщение
конструктором копирования?
нет. это уже конструктор с одним параметром.
0
45 / 45 / 1
Регистрация: 23.05.2009
Сообщений: 92
30.07.2009, 02:36  [ТС]
Цитата Сообщение от Monte-Cristo Посмотреть сообщение
нет. это уже конструктор с одним параметром.
А когда, тогда конструктор класса, содержащий экземпляр своего же класса не является конструктором копирования?

Добавлено через 35 минут 2 секунды
Цитата Сообщение от M128K145 Посмотреть сообщение
конструктор, который создает обьект триггера в сброшеном состоянии
А это что еще за конструктор? Приведи пример пожалуйста.
0
Эксперт JavaЭксперт С++
 Аватар для M128K145
8384 / 3618 / 419
Регистрация: 03.07.2009
Сообщений: 10,709
30.07.2009, 11:31
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;
}
Я не силен в схемотехнике, поэтому присвоил по нулю каждому из входов
1
 Аватар для Monte-Cristo
2816 / 1408 / 107
Регистрация: 07.03.2009
Сообщений: 4,446
30.07.2009, 12:21
Цитата Сообщение от 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;
}
А вообще это спорный вопрос. В одной литературе это называется конструктор копирования по-умолчанию, в другой просто конструктор копирования.
Я же отношусь больше к варианту, что конструктор копирования - это продемонстрированный выше вариант. А если пользователь его перегрузит, я считаю его уже не копированием, так как в перегруженном уже могут выполнятся любые действеия, и копированием даже и не пахнуть.
0
depict1
 Аватар для zim22
281 / 146 / 4
Регистрация: 11.07.2009
Сообщений: 606
30.07.2009, 12:38
Цитата Сообщение от Monte-Cristo Посмотреть сообщение
В одной литературе это называется конструктор копирования по-умолчанию, в другой просто конструктор копирования.
английский рулит. copy constructor
0
Эксперт С++
2924 / 1274 / 114
Регистрация: 27.05.2008
Сообщений: 3,465
30.07.2009, 12:40
Вообще-то Стандарт языка, в разделе 12.8 clauses 2 и 4 абсолютно точно и однозначно определяют, что такое есть конструктор копирования и при каких условиях генерируется встроенный конструктор копирования.
1
 Аватар для Monte-Cristo
2816 / 1408 / 107
Регистрация: 07.03.2009
Сообщений: 4,446
30.07.2009, 12:52
Действительно. Необходимо будет почитать стандарт, так как с оперделниями я сильно не заморачивался

Wiki тоже содержит информацию на эту тему
Конструктором копирования (в англоязычной литературе используется термин copy constructor) называется специальный конструктор в языке программирования C++, применяемый для создания нового объекта как копии уже существующего. Такой конструктор принимает один аргумент: ссылку на копируемый объект.

Обычно компилятор автоматически создает конструктор копирования для каждого класса (известные как неявные конструкторы копирования, т.е. конструкторы копирования, заданные неявным образом), но в некоторых случаях программист создает конструктор копирования, называемый в таком случае явным конструктором копирования (или "конструктором копирования, заданым явным образом"). В подобных случаях компилятор не создает неявные конструкторы.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
30.07.2009, 12:52

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

Не могу правильно сделать конструктор и конструктор копирования и принадлежность точки с заданными координатами треугольнику
#include &quot;stdafx.h&quot; #include &lt;iostream&gt; #include &lt;conio.h&gt; #include &lt;windows.h&gt; #include &lt;math.h&gt; #include &lt;algorithm&gt; using...

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

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

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


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

Или воспользуйтесь поиском по форуму:
33
Ответ Создать тему
Новые блоги и статьи
Часы с термометром и праздничным календарем
yariko 12.11.2026
Сегодня мы рассмотрим как можно сделать отличные многофункциональные часы. Итак, поставим конкретную задачу: разработать часы с календарем, двумя термодатчиками, выводом поздравительных сообщений. . .
Транслитерация текста с кириллицы на латиницу (вариант №1)
Maks 11.11.2026
Решил облегчить жизнь себе и коллегам админам при создании электронных почтовых ящиков для пользователей, в результате написал обработку "Транслитерация текста" с кириллицы на латиницу, а в ней. . .
Книги по геймдизайну, левел-дизайну, игровым механикам и проектированию игрового опыта
8Observer8 08.11.2026
Содержание блога | English Version 1. 2003 - 06 - Designing Virtual Worlds (1st Edition) Автор: Richard A. Bartle | Объем: 768 стр. Ссылки: Amazon . . .
Родители токсичные абьюзеры по отношению к своим детям ругают их оскорбляют не любят
zorxor 08.11.2026
Жить в атмосфере постоянных оскорблений, критики и холодности со стороны родителей — это тяжелое и болезненное испытание, которое оставляет глубокие эмоциональные раны. Токсичное и абьюзивное. . .
Как только я захожу к себе в свою комнату я сразу же с себя снимаю свои трусы. Ответ от Джемени ИИ.
zorxor 08.11.2026
Джемени, как только я захожу к себе в свою комнату я сразу же с себя снимаю свои трусы. Многие люди, возвращаясь домой, сразу переодеваются в максимально свободную одежду или вовсе предпочитают. . .
Паттерн очереди действий/команд (Action / Command Queue). Система очереди действий и кат-сцен с SDL3 Callbacks, cglm и OpenGL
8Observer8 07.11.2026
Содержание блога | English Version Руководство для начинающих по реализации паттерна очереди действий/ команд (Action / Command Queue) на C++ (C++20) с использованием официального SDL3 Callbacks. . .
Проверка полного ФИО в типовом справочнике
Maks 07.11.2026
Решение реализовано в конфигурации КА2, на примере справочника "КонтактныеЛицаПартнеров". Задача: Запрет инициалов. Не допускаеть использование сокращений вида "И. И. ", "И. И. ", "И И" и. . .
Про "Windows must die!"
kumehtar 04.11.2026
Знаете, чет накатило. . . . Когда-то это было почти боевым кличем: мол, нормальный человек сидит на DOS, OS/ 2 или Linux, а вот это вот - Must Die. А теперь человек произносит «мастдай» с усмешкой - и. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru