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一定要加括号,在调用时,不然会报错。

可以图形化看到的东西坚决不会用命令行ORZ

原文地址:https://www.cnblogs.com/IGNB/p/11563174.html