我想知道是否有使用的参考,而不是一些界面上的指针任何好处。作为更具体的让我们考虑小例子:
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的实例可以作为一个指针,什么是写在很多书传递。我的问题是什么可以被认为是一个良好的做法(指针或参考),什么是更有效的?
对不起,如果这个问题以前曾问过。
有了参考资料,你可以让读者清楚它们不能传递null。性能没有差别。 – avakar
但是,如果0作为参数传递,这会导致运行时错误,我错了吗? – besworland
'MyClass'中的'f'不应该被'虚拟'去掉吗? – halex