Карта — не депозит. Если банк не дает выставлять лимиты, то сбережения на карте сопряжены с риском их потерять. У того же Русского Стандарта к карте Банк в Кармане можно открыть накопительный счет, деньги на котором не доступны с карты. 5% годовых и 10% — то ли от 200 тыс, то ли от 300 тыс.
По моему субъективному мнению актуальны 2,5,6:
2. Если покупатель склонен к индукции, то из написанного на сайте может сделать выводы, а их нужно проверить. Например, написано, скидка женщинам и детям — 5%. Вопрос: а если я и женщина, и ребенок одновременно — 10% или все еще 5%? Вот и нужно убедиться
5. Не знают, что в позвонить еще входит автодозвон, когда занято, разговор с роботом и т. п.
6. А вот здесь вопрос технический. Можно ли в обычном магазине, увидев товар на ценнике требовать на кассе продать именно по этой цене? Другими словами, является ли ценник публичной афертой между магазином и продавцом? С интернет-магазином все еще сложнее. Теоретически, сществует возможность сохранять подпись (ЭЦП) магазина на каждой странице с тем чтобы магазин не мог позднее отказаться от того, что опубликовал данную цену. Практически даже это не делается. Не говоря уже о полемике, является ли веб-страница с ЭЦП магазина публичной офертой или нет
То, что это UB никак не мешает тому, что приведенная конструкция проще, чем пример Герба Саттера в «Exceptional C++ Style» решении № 3 задачи 15. Там тоже UB.
>Существует мнемоническое правило, позволяющее легко запомнить, к чему относится const. Надо провести черту через "*", если const слева, то оно относится к значению данных; если справа — к значению указателя.
Еще лучше мнемоническое правило было написано у Бочкова и Субботина: «изнутри наружу». Все, что участвует в создании типа объявляемой сущности: const, volatile, *, (), [] читается от имени этой сущности (самая внутренность) — наружу (то есть влево для префиксов и вправо для постфиксов). Постфиксы () [] имют приоритет перед префиксами const volatile *. Приоритет может быть изменен скобками.
я никого не заставляю ни в этом проекте, ни в других. о данных конкретных запретах не высказываю никакой своей точки зрения. но вообще-то code style и projects restrictions — это обычная практика и тоже, фактически, приводит к формированию подмножеств языков. например, запрет на использование вещественных чисел может быть вполне обоснован для некоторых проектов. так что само по себе программирование на подмножестве — это не плохо.
Я бы хотел уточнить. Пример кода не прямо скопирован из проекта, а воссоздан аналог, и в оригинале семантика не создания — Create(), а заполения класса Base из файла, при этом Derived — парсит файл, а Base — загружает в объект распарсеные значения. Так что если возникло ощущение, что очень сложно происходит создание, что код перенасыщен спагетти — то это уже моя вина: я написал первое пришедшее на ум имя функции Create(), потому что не думал об имени, а думал о том, какая функция какую вызывает. Здесь сразу несколько слоев ошибок. Самое главное, что между Base и Derived не должно быть наследования: должна быть композиция. Соответственно, нечего делать protected в классе Base. Но я хотел заострить внимание на проблемах более низкоуровневых, которые появляются если приведенную архитектуру считать данностью. Плохая архитектура — яма в которой человек сидит, у него три пути: выйти из ямы, остаться на месте и закопаться еще глубже. Первый путь не возможен по не зависящим от него причинам, скажем так, запрещен. Из двух оставшихся он выбирает последний, потому что по не знанию инструмента (языка), фактически делает движения вслепую. А если бы знал — мог бы остаться, не закапываясь глубже :)
Ну, например, я видел такой код, написанный опытным программистом на C, новичком C++:
class Base {
friend class Derived;
protected:
Base* Create();
};
class Derived : public Base {
public:
Base* CreateBase() {
Base* b = new Derived;
return b->Create();
}
};
Собственно, исправляя этот код я и написал пост.
Очевидно, что он просто ошибся в типе b: нужно было написать просто Derived* b = new Derived; (кстати,
такая ошибка произошла тоже по понятным причинам, но это уже за рамками поста)
Дальше он не понял, почему компилятор ругался на вызов b->Create() и попросту добавил Derived в друзья Base
Ваш вопрос «И чо?» задают новички C++ компилятору, когда последний пишет «Base::f() is protected» на строку (3), потому что новички думают о protected как о том, что написано в 15.3 у Строуструпа (см. пост)
Да, я исправлю, но никак не придумаю, как лучше это сделать:
_method мне не нравится, потому что в C++ нет понятия метода
Варианты:
_member или _mem
_function или _fun или _fn или _f
просто _
Пока никак не остановлюсь на чем-то. В каждом мне видится какой-то недостаток
Цена определяется не себестоимостью, а спросом и предложением. Так что с тиражом от балды и ценой от балды — результат ожидаемый, даже хороший. Кстати, 85 грн — цена, которую вам отдает интернет-магазин, значит, для покупателя она выше? Адекватность цены вашей книги и неадекватность цен на услуги издателей — субъективная оценка: издательства свои услуги продают, а вы свою книгу — нет. А вообще, я вам завидую. У меня столько идей, которые я так и не довел до конца. С удовольствием бы заплатил 40000 грн за реализацию хотя бы одной, но к ним еще нужна «бесплатная допечатная подготовка» :)
2. Если покупатель склонен к индукции, то из написанного на сайте может сделать выводы, а их нужно проверить. Например, написано, скидка женщинам и детям — 5%. Вопрос: а если я и женщина, и ребенок одновременно — 10% или все еще 5%? Вот и нужно убедиться
5. Не знают, что в позвонить еще входит автодозвон, когда занято, разговор с роботом и т. п.
6. А вот здесь вопрос технический. Можно ли в обычном магазине, увидев товар на ценнике требовать на кассе продать именно по этой цене? Другими словами, является ли ценник публичной афертой между магазином и продавцом? С интернет-магазином все еще сложнее. Теоретически, сществует возможность сохранять подпись (ЭЦП) магазина на каждой странице с тем чтобы магазин не мог позднее отказаться от того, что опубликовал данную цену. Практически даже это не делается. Не говоря уже о полемике, является ли веб-страница с ЭЦП магазина публичной офертой или нет
Еще лучше мнемоническое правило было написано у Бочкова и Субботина: «изнутри наружу». Все, что участвует в создании типа объявляемой сущности: const, volatile, *, (), [] читается от имени этой сущности (самая внутренность) — наружу (то есть влево для префиксов и вправо для постфиксов). Постфиксы () [] имют приоритет перед префиксами const volatile *. Приоритет может быть изменен скобками.
В частности:
pch(0) — это указатель(1) на const(2)
pch(0) — это константный(1) указатель(2)
Собственно, исправляя этот код я и написал пост.
Очевидно, что он просто ошибся в типе b: нужно было написать просто Derived* b = new Derived; (кстати,
такая ошибка произошла тоже по понятным причинам, но это уже за рамками поста)
Дальше он не понял, почему компилятор ругался на вызов b->Create() и попросту добавил Derived в друзья Base
_method мне не нравится, потому что в C++ нет понятия метода
Варианты:
_member или _mem
_function или _fun или _fn или _f
просто _
Пока никак не остановлюсь на чем-то. В каждом мне видится какой-то недостаток
4) если вы перерегистрируетесь через 50 лет после бана за мошенничество (уверен, ПП это не «пробьет»)