Так много всего. Прежде всего, голые указатели. Пожалуйста, избегайте их всеми средствами. Используйте ссылки, необязательно, unique_ptr, shared_ptr. В качестве последнего средства напишите свой собственный класс, который занимается владением указателем и ничем иным.
Используйте унифицированную инициализацию, если вам может потребоваться C ++ 11 (C ++ 14 предпочтительнее, чтобы избежать дефектов C ++ 11): - он избегает путаницы = vs == и более строг при проверке аргументов, если они есть. 1003 *
if (CThing thing {})
{
}
Убедитесь, что реализовано operator bool
, чтобы получить предсказуемое преобразование из CThing в bool. Однако имейте в виду, что другие люди, читающие код, не увидят operator bool
сразу. Явные вызовы методов обычно более читабельны и обнадеживают. Если вам может потребоваться C ++ 17, используйте синтаксис инициализатора.
if (CThing thing {}; thing.is_good())
{
}
Если C ++ 17 не является опцией, используйте объявление выше, если другие предложили.
{
CThing thing {};
if (thing.is_good())
{
}
}