我刚刚遇到了几个在线示例。
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正在调用其中的另一个分割。这是允许的吗?这两个函数具有相同的名称,C ++能否根据参数的数量选择使用哪一个?
另外,我正在尝试定义如何用字符串表示类Event的对象。这是一段适合我的代码:
inline ostream & operator << (ostream & Str, Event const & event)
{
//do stuff here
return Str;
}
除了内联之外,我不明白这个声明是如何起作用的。(&amp;,operator,&lt;&lt;,etc ......)
感谢您的时间。
答案 0 :(得分:0)
Function overloading允许使用具有相同名称但具有不同数字参数或类型的多个函数/方法。这些函数被置于重载解析中,并且根据传递给split
的参数类型(或参数的数量),编译器将在调用它们时尝试选择正确的函数。
T& x
表示x
是对它所绑定的T
对象的引用。在参数列表中使用引用时,表示没有执行复制/移动构造,并且对象x
现在是其变量的别名。请注意,非const引用不能绑定到临时值(即rvalues)。
对于您的其他问题,请搜索Operator Overloading。