您的位置:首页 > 其它

类重载全局函数指针

2015-12-26 09:07 323 查看
endl中有类重载全局函数指针的效果.

测试代码

/// @file exam_x_x.cpp
/// @brief 类重载全局函数指针

#include <iostream>
#include <limits>

using namespace std;

class CA
{
public:
    CA() {}
    ~CA() {}

    CA& operator << (char cIn)
    {
        cout << cIn;
        return *this;
    }

    CA& operator << (char* pcIn)
    {
        if (NULL != pcIn)
        {
            cout << pcIn;
        }

        return *this;
    }

    CA& operator << (int iIn)
    {
        cout << iIn;
        return *this;
    }

    typedef CA& (*PFN)(class CA& obj);
    CA& operator << (PFN pfn)
    {
        (*pfn)(*this);
        return *this;
    }

    char* getExpression(int iType = 0)
    {
        if (0 == iType)
        {
            return ":P";
        }

        return "@#!";
    }
};

CA& fnMyEndl(CA& obj)
{
    obj << '\n';
    return obj;
}

CA& fnDrawLine(CA& obj)
{
    obj << "----------------------------------------";
    return obj;
}

void fnTestClassFunOverload()
{
    CA a1;

    a1 << fnDrawLine << fnMyEndl
        << '0' << " ^_^ " << 0 << fnMyEndl
        << '1' << " ^_^ " << 1 << fnMyEndl
        << fnDrawLine << fnMyEndl
        << a1.getExpression(0) << fnMyEndl;

    /** run result
    ----------------------------------------
    0 ^_^ 0
    1 ^_^ 1
    ----------------------------------------
    :P
    */
}

void clear_cin();

int main(int argc, char** argv, char** envp)
{
    fnTestClassFunOverload();

    cout << "END, press any key to quit" << endl;
    clear_cin();
    getchar();

    return 0;
}

void clear_cin()
{
    cin.clear();
    cin.sync();
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: