首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >c++builder TFrame中的纯虚函数

c++builder TFrame中的纯虚函数
EN

Stack Overflow用户
提问于 2021-09-04 22:57:07
回答 1查看 44关注 0票数 0

C++Builder 10.4.2

我创建了一个具有纯虚拟函数的TFrame。然后从该TFrame派生出另一个虚函数,但没有覆盖基类虚函数。

我希望得到编译器错误,但没有。

该行为是否未在VCL类中实现?

这是代码:

代码语言:javascript
运行
复制
// create a frame from File/New..., add a pure virtual function
class TFrame4 : public TFrame
{
__published:    // IDE-managed Components
private:    // User declarations
public:     // User declarations
    __fastcall TFrame4(TComponent* Owner);

    virtual void func() = 0;
};
extern PACKAGE TFrame4 *Frame4;

// derive a frame from it, put it on the main form. compile/run 
without error
class TFrame5 : public TFrame4
{
__published:    // IDE-managed Components
private:    // User declarations
public:     // User declarations
    __fastcall TFrame5(TComponent* Owner);
};
extern PACKAGE TFrame5 *Frame5;
EN

回答 1

Stack Overflow用户

发布于 2021-09-06 09:14:18

这是因为TFrame是由VCL框架创建的,该框架是用Delphi语言编写的。因此对象永远不会遇到新的‘C++’关键字。

尝试创建一个“虚拟”对象,隔离在一个单独的名称空间中。这个对象永远不会真正被创建,但它足以触发C++编译器测试抽象类的具体用法。

例如:

代码语言:javascript
运行
复制
namespace Test {
    // this will never really created
    new TFrame5( nullptr ); // <- should trigger an error
}

另请参阅:

https://quality.embarcadero.com/browse/RSP-28329

问候

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69059445

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档