伪函数
c++的运算符重载可以实现伪函数。
伪函数的作用是将变量名当成函数名使用。
1 #include <iostream> 2 #include <thread> 3 #include <windows.h> 4 5 using namespace std; 6 7 8 class MyClass 9 { 10 public: 11 MyClass(); 12 ~MyClass(); 13 void operator() ();//伪函数 14 }; 15 16 MyClass::MyClass() 17 { 18 cout << "start" << endl; 19 } 20 21 MyClass::~MyClass() 22 { 23 cout << "end" << endl; 24 } 25 26 void MyClass::operator()()//作用是将变量名当函数名使用 27 { 28 MessageBoxA(0, "()的重载", "提示", 0); 29 } 30 31 void main() 32 { 33 MyClass one; 34 one(); 35 //one是变量名,在伪函数的作用下,变成函数名,弹出对话框 36 thread th1(one);//将函数传入实现多线程弹出对话框 37 MyClass two; 38 thread th2(two); 39 40 cin.get(); 41 }
()的重载函数只适用于当前对象。
类的构造函数会返回一个临时的对象。
#include <iostream> #include <windows.h> using namespace std; class MyClass { public: MyClass(); ~MyClass(); void operator() ();//伪函数 }; MyClass::MyClass() { cout << "start" << endl; } MyClass::~MyClass() { cout << "end" << endl; } void MyClass::operator()()//作用是将变量名当函数名使用 { MessageBoxA(0, "()的重载", "提示", 0); } void main() { auto temp=MyClass();//调用类的构造函数,返回一个临时变量。 temp();//通过变量名,调用()的重载函数。 cin.get(); }

浙公网安备 33010602011771号