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

Jam*_*zba 1 c++ pointers reference function

我有这样的功能:

void myFunction(MyObject& obj)
{
    //lots of code to operate on obj
}
Run Code Online (Sandbox Code Playgroud)

我的问题是有时obj将是一个指向MyObject类型实例的指针

void myFunction(MyObject* obj)
{
    //...
}
Run Code Online (Sandbox Code Playgroud)

我的问题是如何实现两个函数定义,而不必重复任何代码?

Nat*_*ica 5

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

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

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

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

  • 反过来做这件事会不会更容易?从引用函数到指针函数,由于引用不能为空,因此不需要检查... (2认同)