gpt4 book ai didi

c++ - 需要帮助理解 ' string ltrim(const string &) ' 的含义

转载 作者:太空狗 更新时间:2023-10-29 19:47:33 25 4
gpt4 key购买 nike

我没有多少 C++ 经验。我的问题更多是关于确认我是否正确思考了一些问题。我试图理解一段代码,它有以下一行:

string ltrim(const string &);

我看到了以下答案:1. What is the difference between "std::string const &s" and "const std::string &s"?2. https://www.geeksforgeeks.org/stdstring-class-in-c/3. https://codereview.stackexchange.com/questions/32842/passing-parameters-by-reference

我知道按值调用和按引用调用的概念。

  1. 什么是“ltrim”?

在我看来,这是一个在这里声明的函数名,因为我知道 C++ 没有使用这个名称的预定义函数。我是否正确地假设这意味着它是一个名为“ltrim”的“string”类型的函数,并且这个函数有一个参数“常量字符串类型”。

然而,通常我们有这样的功能:

void abc (int &a)

其中 a 是一个变量。什么是变量:

string ltrim(const string &);

因为“const”具有预定义的含义,而“string”是一种数据类型。参数中传递的变量是什么?

  1. 此外,如果没有变量,'&' 在这里做什么。我了解通过引用调用一些 w.r.t C++,但我没有看到变量名,我不知道用来传递什么。

我试着在互联网上寻找一些信息,但我无法找到一个用字符串解释这一点的地方。

最佳答案

What is 'ltrim'?

你猜对了,ltrim (left-trim) 是一个接受const std::string& 作为参数并返回std::string 的函数。我们实际上不需要像您习惯看到的那样为参数命名,因为我们还没有使用该参数。我们只会在定义函数体后使用它,当前代码行只是对函数的声明。

Also, if there is no variable, what does '&' do here. I understand call by reference some what w.r.t C++, but I don't see a variable name, I don't know what s being used to pass.

仅仅因为没有变量名并不意味着函数不能请求对特定类型的引用。引用类型是类型的一部分,而不是变量名的一部分,参数的名称是完全可选的:

void Foo(int, const int&, int*)
{
// stuff..
}

int main()
{
Foo(1, 2, nullptr);
}

只要 Foo 不尝试访问参数,这段代码就完全合法。不能,因为他们没有名字。


拆分声明和定义并在其中一个而不是另一个中为参数命名也是完全有效的:

void Foo(int);

int main()
{
Foo(1);
}

void Foo(int bar)
{
// stuff with 'bar'...
}

关于c++ - 需要帮助理解 ' string ltrim(const string &) ' 的含义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56691788/

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