c++中函函数定义的语法

Syntax of the functor definition in c++?

本文关键字:语法 定义 函数 c++      更新时间:2023-10-16

我有一个函数减速的例子;

#include <iostream>
class myFunctorClass
{
    public:
        myFunctorClass (int x) : _x( x ) {}
        int operator() (int y) { return _x + y; }
    private:
        int _x;
};
int main()
{
    myFunctorClass addFive( 5 );
    std::cout << addFive( 6 );
    return 0;
}

我的"What"是关于public:后面的那行。我不明白myFunctorClass (int x) : _x( x ) {}这一行的语法。在做什么以及使用这种语法规则的另一个实例是什么?

myFunctorClass (int x) : _x( x ) {}是构造函数。它是一个函数,在类的对象实例化时执行。

: _x(x)部分为初始化列表。这意味着它用一个值初始化一个成员(在本例中,值x用于初始化_x),或者初始化一个父类。

在这种情况下,代码在功能上等于

myFunctorClass (int x) {
    _x = x; 
}

注意这个等价并不总是成立的。初始化和赋值与复制/移动构造之间有细微的区别。

这只是myFunctorClass的构造函数的定义。也许只是: _x( x )部分让你感到困惑。myFunctorClass (int x) {}对你来说有意义吗?: _x( x )部分是成员初始化列表,表示成员_x应该用参数x的值初始化。

这是类的构造函数。它正在初始化数据成员(在:)之后)。构造函数的函数体为空

您正在使用类构造函数成员初始化列表将成员_x初始化为x,该成员作为5传递给myFunctorClass addFive( 5 );中的构造函数