gpt4 book ai didi

未强制执行 C++ 虚函数

转载 作者:行者123 更新时间:2023-11-28 02:53:52 24 4
gpt4 key购买 nike

我有一个接口(interface)类(见第一个代码块),实现(见第二个代码块)不会产生错误,即使 CreateMessage() 没有定义......我完全困惑,因为据我看到这不应该编译。

哦,在 Microsoft 7 上使用 Visual Studio 2010...有人以前见过这个吗?或者我的代码中有错误吗?

代码块 1:

namespace Common
{

namespace Messaging
{

class iNetworkMessageFactory
{
public:

// +----------------------------------------------------------------------
// + Description : iNetworkMessageFactory class destructor.
// +----------------------------------------------------------------------
virtual ~iNetworkMessageFactory() { }


// +----------------------------------------------------------------------
// + Description : Create a network message.
// +----------------------------------------------------------------------
virtual iNetworkMessage *CreateMessage() = 0;
};

} // Namespace Common

} // Namespace Messaging

代码块 2:

#include <Messaging/iNetworkMessageFactory.h>


class NetworkMessageFactory : public Common::Messaging::iNetworkMessageFactory
{
public:
// +----------------------------------------------------------------------
// + Description : NetworkMessageFactory class constructor.
// +----------------------------------------------------------------------
NetworkMessageFactory();


// +----------------------------------------------------------------------
// + Description : NetworkMessageFactory class destructor.
// +----------------------------------------------------------------------
~NetworkMessageFactory();

/*
// +----------------------------------------------------------------------
// + Description : Create a network message.
// +----------------------------------------------------------------------
iNetworkMessage *CreateMessage( NetworkMessageType typeID
, iNetMsgBody *body
, ConnectionID connID );
*/
};

最佳答案

很好,应该不会产生错误。否则,您将无法拥有多个抽象祖先。如果您尝试调用纯虚拟,您将收到运行时错误。

例如,C++ 允许您继承 NetworkMessageFactory 并在派生类中提供纯虚函数的实现。没有理由强制在 NetworkMessageFactory 类本身中存在一个实现。

关于未强制执行 C++ 虚函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22444929/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com