Я в основном работал только с C и сталкивался с некоторыми незнакомыми проблемами на С++.
Скажем, что у меня есть некоторая функция, подобная этой в C, что было бы очень типично:
int some_c_function(const char* var)
{
if (var == NULL) {
/* Exit early so we don't dereference a null pointer */
}
/* The rest of the code */
}
И скажем, что я пытаюсь написать аналогичную функцию в С++:
int some_cpp_function(const some_object& str)
{
if (str == NULL) // This doesn't compile, probably because some_object doesn't overload the == operator
if (&str == NULL) // This compiles, but it doesn't work, and does this even mean anything?
}
В принципе, все, что я пытаюсь сделать, это предотвратить сбой программы при вызове some_cpp_function() с NULL.
-
Каков наиболее типичный/распространенный способ сделать это с объектом С++ (который не связан с перегрузкой оператора
==
)? -
Это даже правильный подход? То есть, должен ли я не писать функции, которые принимают объект в качестве аргумента, а скорее записывают функции-члены? (но даже если это так, ответьте на исходный вопрос)
-
Между функцией, которая ссылается на объект, или функцией, которая принимает указатель на C-стиль для объекта, есть причины выбрать один над другим?