那么如何使用这样的东西创建这样的愚蠢的嵌套函数:Z.reset(...C.reset(B.reset(A.get()))...)
所以函数会像
char * reset(char * buffer)
{
...
return buffer;
}
所以...我的问题是 - 你会向人们展示的C ++简单API中是否可以接受这样的东西?
答案 0 :(得分:4)
我诚实的回答是你不应该在C ++中这样做,因为你不应该在C ++中使用C风格的字符串。 : - )
但是,是的,这样做是好习惯,因为它可以避免不必要的低效率损失。请参阅关于Shlemiel the Painter的this post by Joel Spolsky,了解其原因。
答案 1 :(得分:3)
完全可以接受,但是,
您不应在C ++中使用char*
。请改用std::string
。
答案 2 :(得分:2)
从技术上讲,这是允许的。严格来说,这是可以接受的。但我仍然不会这样做。
我能想到设计这样一个函数的唯一原因是支持Method Chaining,我认为这是令人厌恶的。 Opinions on this differ。你可能会喜欢他们,认为他们很好并且很好表达,对IntelliSense有益,你有什么。实际上,有时甚至可能是正确的事情。
方法除了链接,我看不出你想要的东西。事实上,我认为它会让你得到一些你不想要的东西:困惑的语义。如果有人正在查看您的头文件,他们将会看到此返回并想知道他们为什么需要它。他们可能认为这不是什么,就像他们必须管理的记忆或其他东西。谁知道。但语义并不完全清楚。所以我会避免它。
答案 3 :(得分:1)
好吧,如果你首先传递一个char *并修改它,我认为不需要返回它。我认为char * reset(char * buffer)应该是签名的唯一一次是,如果你发生了一些不应该发生的错误信息。