可能重复:
指针与引用
我想知道在某些接口上使用引用而不是指针是否有任何好处。更具体地说,让我们考虑一个小例子:
struct MyInterface {
virtual ~MyInterface() {}
virtual void f() = 0;
};
class MyClass : public MyInterface
{
virtual void f()
{
std::cout << "F()" << std::endl;
}
};
void myFunction(MyInterface& obj);
int main(int argc, char *argv[])
{
MyInterface* pObj = new MyClass;
myFunction(*pObj);
delete pObj;
getchar();
return 0;
}
void myFunction(MyInterface& obj)
{
obj.f();
}
在myFunction中MyClass的实例可以作为指针传递,这在很多书上都有写。我的问题是什么可以被认为是一种好的做法(指针或参考),什么更有效?
抱歉,如果以前以某种方式问过这个问题。