cpp仿函数

05-6 运算符重载-函数调用(小括号)运算符

  • 函数调用运算符()也可以重载,亦成为:小括号运算符重载。
  • 由于重载后的使用方式非常像函数的调用,所以也被称之为:仿函数。
  • 仿函数没有固定的写发,非常灵活

提示:仿函数在后续(STL)中大量使用。05-6 运算符重载-函数调用(小括号)运算符05-6 运算符重载-函数调用(小括号)运算符。

完成函数调用(小括号)运算符重载有两种方法:

  • 在成员函数里面实现重载。

完成函数调用(小括号)运算符重载的语法:void operator()(形式参数列表)

  1. 在成员函数里面实现重载。

    class test
    {
    public:
    int operator()(int a)
    {
        cout << "a= " << a << endl;
        return 0;
    }
    };

    实际内容:

    #include 
    using namespace std;
    class test
    {
    public:
    int operator()(int a)
    {
        cout << "a= " << a << endl;
        return 0;
    }
    };
    int main()
    {
    class test t1;
    int a = 10;
    t1(a);
    return 0;
    }

    运行结果:(环境:Windows11(arm/Apple M VM)/Visual Studio 2022/Debug/arm64)

    a= 10
  2. 匿名函数对象

    在上面的例子中,我们在类test中重载了一个小括号。这时候调用这个小括号需要对象(传入的形参)。但是如果我不想专门实例化一个对象,则可以创建匿名函数对象:

    #include 
    using namespace std;
    class test
    {
    public:
    int operator()(int a)
    {
        cout << "a= " << a << endl;
        return 0;
    }
    };
    int main()
    {
    test()(100);
    return 0;
    }

    在这里,运行test()(100);会实例化一个test类的对象。使用完成后会立即删除。这就是匿名函数对象。

  • 注意:
    1. 小括号重载(仿函数)只能在成员函数中重载
    2. 可以生成匿名函数对象
    3. 仿函数基本可以当做函数使用。
文章「cpp仿函数」,由本站用户「Admin」发布。文章仅代表Admin观点,不代表本站立场。
页面网页地址「https://xiaozhiyuqwq.top/p/919」。
如您对文章及其附件提出版权主张,或进行引用转载等,请查看我们的【版权声明】
无评论:-)

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇