基于参数类型为指针重载函数的最佳方法参考?

时间:2016-05-23 17:45:00

标签: c++ function pointers reference

我有这样的功能:

void myFunction(MyObject& obj)
{
    //lots of code to operate on obj
}

我的问题是,有时obj将是指向MyObject

类型实例的指针
void myFunction(MyObject* obj)
{
    //...
}

我的问题是如何实现两种功能定义,而不必重复任何代码?

1 个答案:

答案 0 :(得分:5)

您只需从指针功能转发实例即可。

void myFunction(MyObject* obj)
{
    if (obj != nullptr) // do not want to dereference a null pointer
        myFunction(*obj);
}

将调用myFunction的参考版本,允许您只维护一个函数。

这假设您只需要处理对象的值,并且使用指针或引用只是为了保存必须复制对象。