Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Конструктор по умолчанию имеет специальное назначение при инициализации массива объектов своего класса. Конструктор, все параметры которого имеют значения по умолчанию, не является компьютером по умолчанию. Тут.
Красным описку выделил.
Кстати, почему такой конструктор не является конструктором по умолчанию? Очередной костыль?
Конструктор по умолчанию имеет специальное назначение при инициализации массива объектов своего класса. Конструктор, все параметры которого имеют значения по умолчанию, не является компьютером по умолчанию. Тут
"Invalid pointer access" == "Попытка к обращения к некорректному указателю"?
Зачастую прямой признак кривости рук или непонимания базовых принципов работы с указателями.
Реже признак плохой документированности использования класса.
Кстати, почему такой конструктор не является конструктором по умолчанию? Очередной костыль?
Совсем наоборот. Костылём является наличие параметров по умолчанию, так как это является источником трудноуловимых багов. Здесь мы как раз проявили строгость.
Если пишете конструктор с параметрами, то в состоянии написать и беспараметрический конструктор. А если есть конструктор по умолчанию, то не удастся записать параметрический конструктор со всеми параметрами по умолчанию.
Костылём является наличие параметров по умолчанию, так как это является источником трудноуловимых багов.
Да как-то что-то не могу придумать таких ситуаций.
А если есть конструктор по умолчанию, то не удастся записать параметрический конструктор со всеми параметрами по умолчанию.
Прочитал про операцию разрешения контекста ( :: ). Решил попробовать использовать её в двух неродственных классах:
Компилятор выдаёт ошибку на строчке C_A::funcA(j). Если её закомментировать, то вроде работает. В чём моя ошибка?
Прочитал про операцию разрешения контекста ( :: ). Решил попробовать использовать её в двух неродственных классах:
Компилятор выдаёт ошибку на строчке C_A::funcA(j). Если её закомментировать, то вроде работает. В чём моя ошибка?
В вашем случае контекст класса C_A недоступен из класса C_B.
Это корректно только если:
Но тогда можно:
А вообще, такие вызовы используют для перегруженных методов:
Примерно так.
В вашем случае контекст класса C_A недоступен из класса C_B.
Пробую передать значения членов из одного класса в другой "по ссылке" и с помощью описателя. Вроде получаются оба варианта. Вот простейшая схема:
Какой из этих двух способов работает быстрее? Какой предпочтительнее?
Пробую передать значения членов из одного класса в другой "по ссылке" и с помощью описателя. Вроде получаются оба варианта. Вот простейшая схема:
Какой из этих двух способов работает быстрее? Какой предпочтительнее?
Что, совсем тяжёлые/некорректные вопросы?
Долгое время использовал первый способ ("по ссылке"), но вот мысль про описатели очень понравилась. Только не знаю, стоит ли из-за неё переписывать все классы.