【发布时间】:2015-10-26 18:27:40
【问题描述】:
我有一个函数,它有两个类实例作为参数:
void cookPasta(const Tomato& tomato, const Meat* meat)
{
if (meat != nullptr)
cookPastaWithMeat(tomato, *meat);
else
cookPastaWithoutMeat(tomato);
}
如函数所示,Tomato 的实例始终是必需的,而Meat 是可选的,可以传递nullptr。我这样做是为了允许调用 cookPasta 函数,即使用户从未声明过 Meat 类的实例。
在函数签名中混合引用和指针是不好的做法吗?
【问题讨论】:
-
如果两个参数都是指针,那么对函数的用户来说可能会更容易一些,但是编译器不会强制你第一个参数是非空的。
-
@PSkocik。这将包括在我的函数中进行额外的错误检查。你认为这比混合指针和引用更可取吗?
-
“我有一个函数有两个类作为参数”不,你没有。
-
@Chiel:我认为最好不要混合它们,并且根本不要有这个功能。有两个
cookPasta超载,一个吃番茄和肉,另一个只吃番茄。不要将可空性用于流量控制。 -
@LightnessRacesinOrbit。谢谢,使用空指针进行流量控制有什么危险?
标签: c++ oop pointers reference