括号运算符重载

圆括号运算符()也可以重载,重载之后对象就可以使用圆括号运算符了。
括号运算符只能被重载为类的非静态成员函数,不能重载为友元函数和普通函数。
载括号运算符函数的参数个数没有限制,甚至没有参数都可以。
重载格式 类型 类 :: operator() ( 表达式表 ) ;

下面用一个案例来呈现括号重载括号运算符


#include 

class Test7
{
public :
    Test7(int a)
    {
        m_a = a;
    }

    void operator()(int num)
    {
        printf("a = %d\n", num);
    }//这里的括号运算符重载的是打印的功能,可以打印出参数

    int operator()(int a, int b)
    {
        return a + b;
    }
//这里的括号运算符重载的是加法的功能,返回和。

private :
    int m_a;
};

int main()
{
    Test7 t(10);
    t(20);     //=====>t.operator()(20)
    printf("() =%d\n",t(10, 20));//=======>t.operator()(10,20)
// t是对象,不是函数,这里t 重载()运算符,所以这样使用
//或许可以称之为伪函数
    return 0;
}

括号运算符总体不是太难理解,比较简单。

你可能感兴趣的:(c++)