我们可以使用 () 而不是 {} 作为函数作用域吗?
Can we use () instead of {} for function scope?
这行是什么意思:
bool operator() (const song& s);
I am not able to understand that line with operator.
Is operator some kind of keyword in c++?
operator
是一个关键字,用于定义您的 class 将如何与普通运算符交互。它包括 +、-、*、>> 等内容。
您可以在 cppreference 找到完整列表。
它的写法是关键字 operator
后跟运算符。所以,operator+
、operator-
等
operator()
指的是函数运算符。如果它被定义了,那么我们就可以像调用函数一样调用这个对象。
MyClass foo;
foo(); //foo is callable like a function. We are actually calling operator()
在您的示例中,operator()
是函数调用运算符,(const song& s)
是传递给函数的参数。
Can we use () instead of {} for function scope?
不,我们不能。 bool operator() (const song& s);
是 函数声明 ,不是定义。它声明了一个名为 operator()
的特殊函数。 operator()
整体就是函数名。下面的(const song& s)
是函数参数列表。该函数的定义可能如下所示:
#include <iostream>
struct song {
char const* name;
};
struct A {
void operator()(const song& s) {
std::cout << "Received a song: " << s.name << '\n';
}
};
int main() {
A a;
// Here's one way you call that function:
a(song{"Song1"});
// Here's another way
a.operator()(song{"Song2"});
}
这称为运算符重载。您可以了解更多 here.
这行是什么意思:
bool operator() (const song& s);
I am not able to understand that line with operator. Is operator some kind of keyword in c++?
operator
是一个关键字,用于定义您的 class 将如何与普通运算符交互。它包括 +、-、*、>> 等内容。
您可以在 cppreference 找到完整列表。
它的写法是关键字 operator
后跟运算符。所以,operator+
、operator-
等
operator()
指的是函数运算符。如果它被定义了,那么我们就可以像调用函数一样调用这个对象。
MyClass foo;
foo(); //foo is callable like a function. We are actually calling operator()
在您的示例中,operator()
是函数调用运算符,(const song& s)
是传递给函数的参数。
Can we use () instead of {} for function scope?
不,我们不能。 bool operator() (const song& s);
是 函数声明 ,不是定义。它声明了一个名为 operator()
的特殊函数。 operator()
整体就是函数名。下面的(const song& s)
是函数参数列表。该函数的定义可能如下所示:
#include <iostream>
struct song {
char const* name;
};
struct A {
void operator()(const song& s) {
std::cout << "Received a song: " << s.name << '\n';
}
};
int main() {
A a;
// Here's one way you call that function:
a(song{"Song1"});
// Here's another way
a.operator()(song{"Song2"});
}
这称为运算符重载。您可以了解更多 here.