dan*_*uch 5 c++ macros interface c-preprocessor
#define interface class
Run Code Online (Sandbox Code Playgroud)
(这里有更多 - http://www.codeproject.com/KB/cpp/CppInterfaces.aspx)
那有意义吗?这是否阐明了接口与实现类之间的区别?或者它令人困惑,因为很明显纯虚拟类是接口?
你用它吗?还是"宏是邪恶的"?
Jak*_*icz 15
我说这没有道理.该文章中提出的"解决方案"看起来像一个可怕的混乱 - 使用C++有什么问题?当你需要一个纯粹的抽象类并完成它时,为什么要引入一些糟糕的宏呢?
看起来像C#/ Java背景的人试图在C++中找到自己的方式而迷路了.它只会在实际熟悉C++的开发人员遇到时引入错误和混淆.
gd1*_*gd1 11
我真的不建议使用这些技巧,我认为smartass.宏不是邪恶的,但如果有人包含你的代码并interface用作变量名(为什么不呢?),为什么他/她必须花1小时调试gcc -E因为有人决定"接口"(不是C++)会更聪明?
我不喜欢这样.
Dou*_* T. 10
C++从业者提出了有用的惯用方法.这些习语成为其他从业者理解和容易使用的普通方言的一部分.
你在街上雇用的C++程序员会知道一个带有所有纯虚方法而没有实现的基类是一个接口.他们会知道公共继承意味着它实现了这个接口.他们不会知道该文章中指定的疯狂宏语言.
我还要补充一点,习惯用法在C++中尤为重要,因为如果你不小心的话就能真正开始你的脚.事实上,C++中常用的习语可能是C++最强大的功能.
我永远不会重新定义或替换现有关键字 - 除了作者之外,它只会导致每个人的混淆......