cin / cout使用什么技术/模式允许例如cout<< x<< ÿ?

时间:2015-01-22 03:41:11

标签: c# c++ design-patterns

在C ++中,我们通常使用许多<<运算符输出到控制台,如下所示:

cout << "x = " << x; // Output, for ex: x = 5

我知道每个<<运算符再次返回cout,代码应该类似于:

some_class& do_some_thing(int x) {
    // process or print x
    return *this;
}

但是我不知道这种技术或模式叫什么,在什么情况下我们应该使用它?

这种技术是否应该在另一种编程语言上实现,例如C#,我将其用于我的工作。

1 个答案:

答案 0 :(得分:4)

它被称为Method Chaining。作为一个例子,有一个boost库,它提供了一种链接方式,在进行大括号初始化之前分配到容器中(Boost.Assignment):

vector<int> v; 
v += 1,2,3,4,5,6,7,8,9;

typedef pair< string,string > str_pair;
deque<str_pair> deq;
push_front( deq )( "foo", "bar")( "boo", "far" ); 

通常情况下,您会在其他语言中看到更多内容,例如提供fluent interface。在流式传输之外,我在C ++中没有看到那么多。