我有一个这样定义的函数:
void doSomethingWithCustomer (const Customer &customer);
我的一位开发人员这样称呼它:
Customer *customer = order.getCustomer();
doSomethingWithCustomer (*customer);
不幸的是getCustomer
,如果订单未绑定到客户,该方法可能会返回 nullptr。如果getCustomer
返回 nullptr,则应用程序不会在调用时崩溃,doSomethingWithCustomer
而是在使用客户参考的函数内崩溃。
当然,正确的写法是先检查 customer 不是 nullptr,然后如果我们有有效的客户,则调用该函数。通常我们期望如果一个函数/方法有一个引用参数,调用者检查它的有效性(这里不是这种情况),而不是函数本身检查参数。
我知道 Visual Studio 2010(及更早版本)通过实际传递指针来传递引用,但我想知道这是否在 C++ 标准中的某处指示。我们是否可以假设引用总是作为指针传递(就我个人而言,我不会依赖这个,但知道它很有趣)?
是否可以告诉 Visual Studio 在传递引用时,它应该首先自动取消引用并在调用时崩溃,而不是在更深的地方(在调试版本中这样做可能就足够了)?