基类具有带有此签名的成员函数
virtual void method(A &a, B &b, C &c, D& d);
用户定义了一个重写此方法的派生类。
我们发现方法代码具有误导性,因为它的设计不正确:
代码的其余部分将使用为b赋予的值,如果设置了c和d的值,则将受益。
显然,这是一个糟糕的设计,例如应将a声明为 const 。
问题:
最佳答案
C++不像其他一些语言(例如C#,ref
,out
,[Obsolete]
标记)那样为此提供任何方便的工具。
不过,我已经看到有人这样做:
#define in
#define out
#define optional
// DEPRECATED
virtual void method(const A& a, out B& b, optional out C& c, in out D& d);
当然,这在行为上没有什么不同,并且对编译器没有任何意义,对人类读者来说只是美化了。
除此之外,我认为制作第一个参数
const
是您可以做的最好的事情。从语义上讲,没有什么比将它们保留为非常量引用更好的了。至于标记不推荐使用,最好的办法是在其上留下评论,或者在使用该功能时在控制台或日志文件中打印“我不推荐使用,请勿使用我”警告消息。
关于c++ - 成员函数的设计问题,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22637335/