为什么只有指针用于多态?

时间:2017-09-24 11:30:15

标签: c++

为什么在引用工作时我只看到用于多态的指针?我知道引用只能绑定一次,但这是唯一的原因吗?我的意思是,你必须重新分配它们总是吗?

1 个答案:

答案 0 :(得分:1)

一个原因是从factory返回引用将是really bad idea

正如评论中所指出的,你可以使用与引用相同的语义(除了使它们为空),我的观点是这需要不自然的语法,例如在工厂中:

return */*<--*/object_ptr; // dereferencing a pointer to match return type of factory

用户代码:

Base& ref= Factory::GetObject(//...
//...
delete &/*<--*/ref;

auto object = make_unique<Base>(&/*<--*/Factory::GetObject(//...