gpt4 book ai didi

c++ - 我应该在运行时或编译时强制执行 C++ 接口(interface)吗?

转载 作者:行者123 更新时间:2023-11-28 00:08:06 25 4
gpt4 key购买 nike

我在 Nmap's source code 中找到了这个:

/** This function MUST be overwritten on ANY class that inherits from          
* this one. Otherwise getBinaryBuffer will fail */
virtual u8 * getBufferPointer(){
netutil_fatal("getBufferPointer(): Attempting to use superclass PacketElement method.\n");
return NULL;
} /* End of getBufferPointer() */

如果 getBufferPointer 是纯虚拟的,任何未能实现它的派生类都会在编译时被捕获。为什么选择运行时错误而不是编译器触发的错误会更好?

最佳答案

一个人不应该更喜欢运行时错误而不是编译时错误,尤其是当语言提供了一种更简单的方法来准确地做你想做的事情时,这也会产生编译器错误。在我 5 年多的 C++ 编码中,我从未遇到过使用您的方式创建方法的理由。

Run time error = 许多可能的原因,我需要自己的调试语句来找到它。可能还需要多次运行该程序。在你的情况下,我可能有其他类无法重写该方法,这可能会在某些未定义的点导致错误。

编译时错误 = 一个原因,我的编译器告诉我发生了什么。

关于c++ - 我应该在运行时或编译时强制执行 C++ 接口(interface)吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34418506/

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