|
45 / 21 / 6
Регистрация: 28.02.2013
Сообщений: 194
|
||||||
Никогда не использовать конструктор с параметрами?05.03.2013, 10:52. Показов 2897. Ответов 31
Метки нет (Все метки)
Если я захочу чтоб в одном классе был вложен другой класс
Не по теме: например есть класс "бумажник" То обнаружу что я не могу передать его конструктору параметры. а могу лишь написать:
Если же я захочу написать функцию типа c_Chelovek::AddBumaznik(int dengi); и в ней вызвать конструктор бумажника с параметрами - то ничего ни выходит. Типа обьект уже создан. Отсюда делаю далеко идущие выводы. Вот пишу я класс. Возможно когда то я или кто то захочет использовать его экземпляр внутри своего класса. тогда у меня один правильный выход: -писать конструктор без параметров -писать функцию класса Init(params); //Функцию инициализации класса с параметрами Я чтото упустил из виду? Добавлено через 12 минут Или же так не делают. А надо по хитрому. - заводить переменную - указатель на обьект "бумажник" - в функции c_Chelovek::AddBumaznik(int dengi) выделять оператором new новый экземпляр класса "бумажник" при этом ему можно сообщать параметры конструктора и в переменную(указатель) писать адресс вновь созданого обьекта и с ним потом както работать
0
|
||||||
| 05.03.2013, 10:52 | |
|
Ответы с готовыми решениями:
31
Определить конструктор без параметров, конструктор с одним параметром, конструктор с двумя параметрами, деструктор
|
|
В астрале
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
|
|
| 05.03.2013, 12:55 | |
|
nefton, Ну во-первых если и хранить в классе человека какие-то объекты, то либо быть уверенным, что человек обязан обладать этими объектами, либо хранить указатели. Либо хранить указатель/ссылку на человека в конкретном типе. Либо построить взаимодействие несколько по-другому, например через id-шники, а связь устроить через БД.
0
|
|
|
Неэпический
|
|
| 05.03.2013, 12:56 | |
|
Не несите ерунды. Ваша задача сделать класс бумажник, этим и занимайтесь. Делайте его интерфейс максимально эффективным. А то, как Ваш класс будет использоваться Вас никак не должно касаться. Вы сделали свой кирпич(класс) и он будет использован при строительстве дома(программы). А в каком месте он будет и каким боком, Вас касаться не должно.
0
|
|
|
179 / 165 / 21
Регистрация: 12.02.2013
Сообщений: 410
|
|||
| 05.03.2013, 13:00 | |||
|
Далее. Если однажды бумажник не удовлетворит запросу - есть наследование и агрегация, как механизмы повторного использования кода при создании новых классов, закрытое наследования, наконец.
0
|
|||
|
45 / 21 / 6
Регистрация: 28.02.2013
Сообщений: 194
|
|
| 05.03.2013, 13:04 [ТС] | |
|
Та я уже понял что самое лучшее из возможных вариантов - работать с указателями на обьекты.
и не придумывать как обойти это типа функции Init() или тем более цвет по умолчанию
0
|
|
|
179 / 165 / 21
Регистрация: 12.02.2013
Сообщений: 410
|
|
| 05.03.2013, 13:06 | |
|
nefton, Сорри, я уже, наверное, обсужденные вещи накатал. (прост с английского на рабочее место вернулся и не увидел, что тут уже 3 страницы, ответил на первые сообщения)
0
|
|
|
2924 / 1274 / 114
Регистрация: 27.05.2008
Сообщений: 3,465
|
||
| 05.03.2013, 13:15 | ||
|
Короче, тут у тебя "смешались в кучу кони, люди...." А надо - разделяй и властвуй!
0
|
||
|
179 / 165 / 21
Регистрация: 12.02.2013
Сообщений: 410
|
|
| 05.03.2013, 13:17 | |
|
По-хорошему, так вообще можно декларировать человека как френд для бумажника, чтобы тот проверял состояние его самостоятельно. Потому как бумажник - лишь обертка для хранения денег/карт и едва ли объект класса бумажник должен отвечать на запрос кол-ва денег. Это больше походит на реальное поведение, но делает класс бумажника не особо универсальным, потому как теперь работать с ним может лишь человек. И, к тому же эта идея может разбудить воинственных крестоносцев, неприемлющих использование friend-классов
0
|
|
|
45 / 21 / 6
Регистрация: 28.02.2013
Сообщений: 194
|
|
| 05.03.2013, 13:18 [ТС] | |
|
п.с. и вовсе это не противоестественно иметь обьект его не инициализируя.
чего ж вы не возмущаетесь противоестественности записи int i; //some code i=5;
0
|
|
|
179 / 165 / 21
Регистрация: 12.02.2013
Сообщений: 410
|
||
| 05.03.2013, 13:19 | ||
|
0
|
||
|
2924 / 1274 / 114
Регистрация: 27.05.2008
Сообщений: 3,465
|
|||||||
| 05.03.2013, 13:27 | |||||||
0
|
|||||||
|
45 / 21 / 6
Регистрация: 28.02.2013
Сообщений: 194
|
|
| 05.03.2013, 13:30 [ТС] | |
|
CheshireCat, ну вот я ж и говорю что это нормально, и компилятор считает что это нормально.
а вот если i это обьект - то компилятор уже считает по другому, что не нормально иметь чтото в памяти без начальной инициализации. хотя в книжках говорят что класс - это как бы такой тип данных.
0
|
|
|
179 / 165 / 21
Регистрация: 12.02.2013
Сообщений: 410
|
||
| 05.03.2013, 13:36 | ||
|
во-первых, он может быть использован в таком виде - и будет тебе undefined behaviour (кстати, по-моему, этот термин потрясающе популярен и излюблен всеми)))) Во-вторых, твой кошелёк, находит ли (в случае его неинициализированности) отражение в реальном мире? Нет. его однажды создали и все. Его физические свойства - его инвариант к контексте пользования им, если ты, конечно, не предусматриваешь функцию типа tear up для человека) (для физических издевательств над кошельком многострадальным)
0
|
||
| 05.03.2013, 13:36 | |
|
Можно ли использовать конструктор по умолчанию и конструктор инициализации одновременно?
Конструктор (с параметрами) Конструктор с параметрами Конструктор с параметрами Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Сукцессия 20. Война автоботов. Делаем ставки. Лёд против "пш-пш!".
anaschu 11.07.2026
Битва ИИ в ризосфере: Как мы скрестили жесткие ОДУ, закон Фика и «подземный шантаж»
Уважаемые коллеги!
Хочу поделиться уникальным опытом ведения междисциплинарной компьютерной разработки. Прямо. . .
|
Сукцессия 19. Какие выводы я сделал из модели? Часть 2.Внутримикоризный стехиометрический буфер и хроно-дискретные зоны экспансии
anaschu 11.07.2026
Био-Инженерный Ликбез: Архитектура Модели Ризосферы
Математический аппарат моделирования
|
Сукцессия 18. Какие выводы я сделал из войны грибов с деревьями? Часть 1- рассказ и немного про термины
anaschu 11.07.2026
Био-Инженерный Ликбез: Архитектура Модели Ризосферы
Математический аппарат моделирования
Система ОДУ описывает динамику изменения массы различных компонентов системы во времени. Ключевой. . .
|
Просветление в 5 секунд
kumehtar 10.07.2026
Андрей Веретенников выдал фразу недавно: "Вам не обязательно кем-то себя считать"
|
|
Эксперимент с картинкой-обложкой на CodinGame
Adler 10.07.2026
Решил на днях провести эксперимент. У меня есть аккаунт на CodinGame, ТОП-3 по РФ среди 2200 участников (в разделе соревнования по программированию ИИ-ботов). Там есть обложка, куда можно влепить. . .
|
GitDOS: Когда я решил скрестить MS-DOS, GitHub и Claude
MaGz GoLd 08.07.2026
Привет, Киберфорум! Хочу поделиться своим проектом, который, надеюсь, вас заинтересует. GitDOS — это веб-приложение, которое позволяет запускать DOS в браузере с тремя крутыми фичами: диски живут в. . .
|
Учебный мини "цифровой двойник" = (Сервер = Java + Flask_питон )+(3D = Гугловскаая 4T nvideo + google colab) +( WMS = Odoo на Docker)
anaschu 07.07.2026
Увидел в требованиях к вакансии создателя имитационных моделей связку (REst + Api + WMS + Anylogic + питон + 3D Nvideo), и решил посмотреть, что это такое. Из этого всего я работал более менее. . .
|
Море в объективе
kumehtar 06.07.2026
Хотел написать много проникновенных слов, но передумал.
Оно само - говорит.
Кто слышит тот слышит.
|