// ============================================================================ // p1c09_04_01 — 4.1 函数对象 // 来源:川大 C++/LinuxC wiki「02.Qt方向」 // 说明:本文件由 gen_part1.py 合并页面中的教学片段而成。每个片段用 // // --- 原文片段 [pageId:blockIdx] --- 标注出处。 // 已做最小修正(笔误/平台移植),详见 docs/ERRATA.md。 // ============================================================================ #include using namespace std; // --- 原文片段 [58954498:0] 4.1 函数对象 --- //函数对象是重载了函数调用符号的类 class MyPrint { public: MyPrint() { m_Num = 0; } int m_Num; public: void operator() (int num) { cout << num << endl; m_Num++; } }; //函数对象 //重载了()操作符的类实例化的对象,可以像普通函数那样调用,可以有参数 ,可以有返回值 void test01() { MyPrint myPrint; myPrint(20); } // 函数对象超出了普通函数的概念,可以保存函数的调用状态 void test02() { MyPrint myPrint; myPrint(20); myPrint(20); myPrint(20); cout << myPrint.m_Num << endl; } void doBusiness(MyPrint print,int num) { print(num); } //函数对象作为参数 void test03() { //参数1:匿名函数对象 doBusiness(MyPrint(),30); } // --- main --- int main() { test01(); test02(); test03(); return 0; }