Проверка * это * PTR в функции члена - хорошая практика?C++

Программы на C++. Форум разработчиков
Ответить Пред. темаСлед. тема
Anonymous
 Проверка * это * PTR в функции члена - хорошая практика?

Сообщение Anonymous »

Предположим, у меня есть класс < /p>

Код: Выделить всё

class Foo {
public:
void fn();
private:
int i;
};
< /code>
и функция поиска < /p>
Foo* findFoo() {
// return nullptr if failed to find
}
< /code>
Мы можем проверить, нашел ли мы Foo, прежде чем вызовать участник < /p>
{
Foo* foo = findFoo();
if (foo) {
foo->fn();
}
}
< /code>
Я думаю, что это оператор «если» является избыточным. Если мы сможем обеспечить поведение по умолчанию для случая Nullptr, это будет более прямым. Итак, я выясняю практику: < /p>

void Foo::fn() {
if (this == nullptr) { return; } // default behavior is to return for nullptr
i; // access to member
}
< /code>
Мы можем использовать его напрямую без проверки nullptr < /p>
{
findFoo()->fn();
}
сравнить «это» с «nullptr» - это точно не обычное использование этого , поэтому мне интересно, есть ли у него некоторые побочные эффекты или недостатки

"избыточный" может привести к недопониманию. Я на самом деле имею в виду «шумный» здесь.
Предположим, что Foo При желании содержит класс Foo_1, Foo1. Необязательно содержит класс foo_2, ... foo_n. < /P>
Если я хочу вызвать участник Функция foo_n из foo, если foo_n содержится рекурсивно в Foo, я должен проверить каждый уровень Foo_x с помощью оператора if . Я думаю, это шумно. Если проверить это в функции члена, это можно назвать как foo-> get_foo_1 ()-> get_foo_2 ()-> ...-> get_foo_n ()-> call ()

Подробнее здесь: https://stackoverflow.com/questions/794 ... d-practice
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C++»