-5

刚遇到几个网上的例子。

std::vector<std::string> &split(const std::string &s, char delim, std::vector<std::string> &elems) {
    std::stringstream ss(s);
    std::string item;
    while (std::getline(ss, item, delim)) {
        elems.push_back(item);
    }
    return elems;
}


std::vector<std::string> split(const std::string &s, char delim) {
    std::vector<std::string> elems;
    split(s, delim, elems);
    return elems;
}

拆分正在调用其中的另一个拆分。这是允许的吗?这两个函数具有相同的名称,C++ 是否能够根据参数的数量来选择使用哪一个?

另外,我正在尝试定义 Event 类的对象如何用字符串表示。这是一段对我有用的代码:

inline ostream & operator << (ostream & Str, Event const & event)
{
        //do stuff here    
        return Str;
}

除了内联,我不明白它的声明是如何工作的。(&,运算符,<<,等等......)

感谢您的时间。

4

1 回答 1

0
  1. 函数重载允许使用具有相同名称但具有不同数字参数或其类型的多个函数/方法。这些函数被置于重载决议中,并且根据传递给的参数的类型split(或参数的数量),编译器将在调用它们时尝试选择正确的函数。

  2. T& x手段xT它所绑定的任何对象的参考。当在参数列表中使用引用时,这意味着没有执行复制/移动构造,并且该对象x现在是其变量的别名。请注意,非常量引用不能绑定到临时变量(又名右值)。

    对于您的其他问题,请搜索Operator Overloading

于 2013-06-05T21:36:29.903 回答