c++:高级函数定义
C++: advanced function 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.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, <<,等等…)
感谢您的宝贵时间。
-
函数重载允许使用具有相同名称但参数数量或类型不同的多个函数/方法。这些函数被放入重载解析中,并且,根据传递给
split
的参数类型(或参数数量),编译器将在调用它们时尝试选择正确的一个。 -
T& x
表示x
是它所绑定的T
对象的引用。当参数列表中使用引用时,这意味着没有执行复制/移动构造,并且对象x
现在是其变量的别名。注意,非const引用不能绑定到临时值(即右值)。对于您的其他问题,搜索操作符重载。
相关文章:
- 在命名空间中定义函数还是限定函数
- 为什么在定义函数之前先声明它
- 使用用户定义函数的字符串反转
- 用户定义函数中的指针和输入
- 这个c++代码是如何在没有定义函数的情况下运行的
- 具有外部"c"和程序集的未定义函数
- 已定义函数时出现 G++ "未定义的引用"错误
- 将自定义函数传递到基抽象类中以延迟执行
- C++使用 rand 定义函数语法
- Arduino:在 loop() 和自定义函数中运行相同的代码时出现问题
- 将具有固定签名的自定义函数名称注入 CRTP
- 使用定义函数模板别名
- 是否可以使用单个定义定义函数的常量和常规版本?(使用模板,自动,decltype等)
- 在内联程序集中定义函数和从 C++ 调用时出现问题
- 在 Metal 着色器代码中,如何定义函数的 in/out 参数变量?
- 声明和定义函数静态会产生"undefined reference to function_name()"
- 朋友定义函数的名称空间是什么
- 介子 对用户定义函数的未定义引用
- 如何使用 "using" 关键字定义函数原型/签名
- 在 C 结构中定义C++函数