昨天我在一次面试中经历了一次可怕的经历。
面试官问我关于纯粹的虚拟功能。我说过,它可能有也可能没有基类中的定义,但是派生类应该提供定义,除非它们也想成为抽象类。
但是面试官不停地问“纯粹的虚拟能有定义吗!??”。我同意了。
他又说:“纯洁?”
我同意了。允许的话,派生类可以显式地调用该函数,如果它们需要特定的行为。
他让我出去了。我确信他不知道纯虚拟函数可以有定义的事实。
如何处理这类面试官?
在第二次问完之后,我是否应该撒谎说它不可能有定义?:)
还是我应该坚持自己的话,失去工作机会?
发布于 2011-01-09 07:10:58
不是的。你应该感谢你的幸运星你被那颗子弹打中了。为那些拒绝承认自己可能不知道一切、拒绝向他人学习的人工作是一种非常不愉快的经历。
发布于 2011-01-09 07:13:29
具有定义的纯虚拟函数的示例:
// object.hpp
struct object
{
// virtual destructor, to allow use as a public base class,
// but pure to ensure object itself isn't instantiated
virtual ~object() = 0;
};
inline object::~object()
{
// empty implementation
}发布于 2011-01-09 08:24:35
眼前的问题不是技术上的正确性,而是社交/沟通技巧。立场坚定,但要承认面试官的观点,让他们保住面子。
一旦你能看到他在钓鱼(“纯粹吗?”)),一个好的答案可能是:
一般认为纯虚函数不能有定义。但是,从技术上讲,如果一个虚拟函数是纯的,它必须在声明中包含
=0。它仍然可以有一个定义(尝试它,它将编译!)当然,这很少被使用,而在实践中,当大多数人说“纯粹的虚拟”时,他们暗示这个定义是没有的。
https://softwareengineering.stackexchange.com/questions/35038
复制相似问题