C++ C++;:高级函数定义

C++ C++;:高级函数定义,c++,function,operator-keyword,definition,C++,Function,Operator Keyword,Definition,我刚刚在网上遇到了几个例子 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.pu

我刚刚在网上遇到了几个例子

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;
}
std::vector&split(常量std::string&s、char-delim、std::vector&elems){
标准::stringstream ss(s);
std::字符串项;
while(std::getline(ss,item,delim)){
元素推回(项目);
}
返回元素;
}
std::vector split(const std::string&s,char delim){
std::向量元素;
拆分(s、delim、elems);
返回元素;
}
Split调用其中的另一个Split。允许这样做吗?这两个函数具有相同的名称,C++将能够根据参数的数量选择使用哪个? 此外,我还试图定义如何用字符串表示类Event的对象。这是一段适用于我的代码:

inline ostream & operator << (ostream & Str, Event const & event)
{
        //do stuff here    
        return Str;
}
inlineostream&运算符
  • 允许使用名称相同但数字参数或类型不同的多个函数/方法。这些函数被放入重载解析中,根据传递给
    split
    的参数类型(或参数数量),编译器将在调用它们时尝试选择正确的参数

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

    对于其他问题,请搜索


  • “教我C++”不是一个特定的编程问题。阅读一篇教程。要理解第一个示例,请查找函数重载,理解后,请查找运算符重载以了解第二位。下面是一个开始:谷歌:1)函数重载2)转换构造函数。可怜的新手,我们的一连串否决票夺走了他剩下的一点点代表(@greatwolf他本可以在发布前阅读常见问题来避免这种情况。为什么ostream$Str被作为参数传递?这就是@quannguyen this是一个全局运算符重载的方式。所有全局运算符都有两个参数,其中一个必须是类类型。第一个参数是
    std::ostream
    的对象。
    &
    denot这是一个引用。总之,第一个参数类型是
    std::ostream&
    Str
    只是参数的名称。您可以这样使用它:
    std::cout