Поскольку android:backgroundTint
не работает под Android API 21, вам нужно использовать app:backgroundTint
.
Как насчет того, чтобы взять книгу по функциям стандартной библиотеки C?
В противном случае вы можете попробовать страницы руководства:
man 3 logf
, например
Примеры проблем:
.
оператор и т. д.), но ведет себя как указатель (может болтаться) - поэтому, например, Google Style Guide не одобряет его Мое практическое правило:
Объекты редко допускают назначение и другие вещи, например сравнение. Если вы рассмотрите какую-то бизнес-модель с такими объектами, как «Отдел», «Сотрудник», «Директор», трудно представить случай, когда один сотрудник будет назначен другому.
Так что для бизнес-объектов очень хорошо описывать отношения «один-к-одному» и «один-ко-многим» как ссылки, а не указатели.
И, вероятно, нормально описывать отношение «один или ноль» как указатель.
Так что нет «мы не можем назначить» затем коэффициент.
Многие программисты просто привыкают к указателям, и поэтому они найдут любой аргумент, чтобы избежать использования ссылки.
Наличие указателя в качестве члена заставит вас или члена вашей команды проверять указатель снова и снова перед использованием, с комментарием «на всякий случай». Если указатель может быть нулевым, то указатель, вероятно, используется как своего рода флаг, что плохо, поскольку каждый объект должен играть свою роль.
В некоторых важных случаях возможность присваивания просто не требуется. Часто это легкие обертки алгоритмов, которые упрощают вычисления, не покидая области видимости. Такие объекты являются первыми кандидатами на роль ссылочных членов, поскольку вы можете быть уверены, что они всегда содержат действительную ссылку и никогда не нуждаются в копировании.
В таких случаях обязательно используйте оператор присваивания (а часто и также конструктор копирования) непригоден для использования (путем наследования от boost :: noncopyable
или объявления их закрытыми).
Однако, как уже прокомментировал пользователь pts, это не верно для большинства других объектов. Здесь использование ссылочных элементов может стать огромной проблемой, и его обычно следует избегать.
Поскольку все, кажется, раздают общие правила, я предлагаю два:
Никогда и никогда не используйте ссылки в качестве членов класса. Я никогда не делал этого в своем собственном коде (кроме как для того, чтобы доказать себе, что я был прав в этом правиле), и не могу представить себе случай, когда я бы сделал это. Семантика слишком запутанная, и на самом деле это не то, для чего были разработаны ссылки.
Всегда, всегда используйте ссылки при передаче параметров функциям, за исключением основных типов, или когда алгоритм требует копии.
Эти правила просты и сослужили мне хорошую службу. Я оставляю правила использования умных указателей (но, пожалуйста, не auto_ptr) в качестве членов класса другим.
Да для: Верно ли, что объект, содержащий ссылку, не должен быть назначен, поскольку ссылка не должна изменяться после инициализации?
Мои практические правила для члены данных:
Обычно я использую указатель в данных элемента только тогда, когда указатель может быть нулевым или изменяться. Есть ли какие-либо другие причины предпочесть указатели ссылкам на элементы данных?
Да. Читаемость вашего кода. Указатель делает более очевидным, что член является ссылкой (по иронии судьбы :)), а не содержащимся в нем объектом, потому что, когда вы его используете, вы должны отменить ссылку на него. Я знаю, что некоторые люди думают, что это старомодно, но я все же считаю, что это просто предотвращает путаницу и ошибки.