c++:高级函数定义

C++: advanced function definition

本文关键字:定义 函数 高级 c++      更新时间:2023-10-16

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

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;
}

Split调用它内部的另一个Split。允许这样做吗?这两个函数有相同的名称,c++是否能够根据参数的数量选择使用哪一个?

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

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

除了内联,我不明白this的声明是如何工作的(&, operator, <<,等等…)

感谢您的宝贵时间。

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

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

    对于您的其他问题,搜索操作符重载。