gpt4 book ai didi

c++ - 什么保证重载的非常量方法被调用?

转载 作者:可可西里 更新时间:2023-11-01 16:34:36 25 4
gpt4 key购买 nike

给定这两个修改并返回字符串的函数:

// modify the original string, and for convenience return a reference to it
std::string &modify( std::string &str )
{
// ...do something here to modify the string...
return str;
}

// make a copy of the string before modifying it
std::string modify( const std::string &str )
{
std::string s( str );
return modify( s ); // could this not call the "const" version again?
}

此代码适用于使用 GCC g++ 的我,但我不明白为什么/如何。我担心第二个函数会调用自己,让我无法控制递归,直到堆栈耗尽。这保证有效吗?

最佳答案

你有两个重载函数:

std::string &modify( std::string &str )
std::string modify( const std::string &str )

您传递的是非 const 限定的 std::string。因此,采用非 const 限定参数的函数更合适。如果不存在,编译器可以将非 const 限定字符串转换为 const 限定字符串以进行调用,但对于函数重载,不需要转换的调用更适合需要转换的调用。

关于c++ - 什么保证重载的非常量方法被调用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16325181/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com