Является ли законным C ++ для проверки this-указателя в функции-члене?

У меня есть приложение с участием объектов разных типов классов. На объекты ссылаются указатели. Пустой указатель означает, что связанный объект не существует. В настоящее время вызывающие коды являются громоздкими, потому что каждый раз, когда он использует указатель на объект, он проверяет значение указателя на null и предпринимает некоторые соответствующие действия, это null. Поскольку действие по умолчанию в случае несуществования зависит от типа объекта, я бы предпочел кодировать его в классах для самих объектов, а не в вызывающей программе. Это приводит к конструкциям, подобным следующему:

class C
{ ... 
  void member_func() //non-virtual !
  { if (this) { do something with the object ... }
    else { take some default action }
  }
  ...
};

Ясно, что функция-член не может быть виртуальной, поскольку таблица поиска не существует, когда объект не существует, и виртуальный вызов не будет выполнен. Но допустим ли этот код C ++ для не виртуальных функций-членов? Кажется, он работает правильно для компиляторов, на которых я его пробовал, но меня беспокоит возможная непереносимость. В стандарте я не могу найти пункт, который либо явно разрешает, либо прямо запрещает такие конструкции.

Ответы на вопрос(5)

Ваш ответ на вопрос