3

所以我只是通过返回 *this 指针来处理级联成员函数调用。我知道它是如何机械地工作的,但它看起来像是在实现使用点运算符获得对单行链函数调用的次要能力的函数上的大量时间投资。我确信除了简单地缩短成员函数调用之外,肯定还有其他一些好处,但是关于这个主题的信息确实不多。google 的前几页只提供了关于如何实现级联函数调用的说明,并没有说明为什么、如何或在哪里这种技术可能有用。任何人都有一些有用的链接可能会更深入地涵盖该主题?谢谢。

4

2 回答 2

5

当操作链接有意义时,好处是为类的用户提供更好看的代码。例如:

 rect.left( 10 ).top( 5 ).right( 50 ).bottom( 40 );

这可能比以下任何一种都更好读:

 // longer code
 rect.left( 10 );
 rect.top( 5 );
 rect.right( 50 );
 rect.bottom( 40 );

或者:

 // reader should remember order of parameters
 rect.move_to( 10, 5, 50, 40 ); 
于 2012-10-16T04:08:24.517 回答
2
  • 令人眼花缭乱的代码
  • 大量项目的方便分配(Boost分配库

有时,我猜非常罕见,但我看到了这样的使用(通常在单元测试中):

  • 它为对象的构造增加了一些灵活性(您不必遵循参数的顺序或添加许多重载的构造函数)
  • 表示逻辑很方便OR(例如用于设置标志)
于 2012-10-16T07:28:50.740 回答