C++ 11 +,开坑。
作者:互联网
最近换新工作了。工作中需要用到高端的c++11的一些操作,至于我后面又plus一下还是因为可能是c++14或者17中提供的一些操作。反正都是c++11以及之后的一些特性。
首先,今天看一下关于函数模板的问题。我前几天看到这样一段代码。
1 #include <iostream> 2 3 class test 4 { 5 private: 6 public: 7 test(){} 8 ~test(){} 9 void show(int number); 10 }; 11 12 void test::show(int number) 13 { 14 std::cout<<__LINE__<<" number="<<number<<std::endl; 15 } 16 17 class work 18 { 19 private: 20 public: 21 work(){} 22 ~work(){} 23 24 //work_it就是例子生成的函数了,模板的参数就是某个类,work_it传入的是这个类的实例的指针和对应的方法 25 template <class T> 26 void work_it(T *object, void(T::*method)(int number)) 27 { 28 (*object.*method)(number); 29 } 30 }; 31 32 int main() 33 { 34 test objk; 35 work work_; 36 work_.work_it<test>(&objk, &test::show); 37 return 0; 38 }
其中调用部分也可以采用lamda表达式,最最最需要关注的是*object.*method一定要加括号,在调用时,不然会报错。
标签:11,int,void,work,number,C++,开坑,test 来源: https://www.cnblogs.com/IGNB/p/11563174.html