首页 > 代码库 > c++11 常用语法

c++11 常用语法

1.using用法

typedef void (*ptr)(int);

using ptr = void (*)(int);

 

2.可调用对象

1.函数指针

2.具有operator()成员函数的对象(仿函数)

3.可被转换为函数指针的类对象

4.类成员(函数)指针

举例:

1.void func(void){}

2.class foo {

  void operator()(void){}

}

3.class bar {

  using ptr = void (*)(void);

  static void func(void){}

  operator ptr(){ return func; }

}

4.

class a {
public:
int a_;

void mem_func(void)
{
cout << "hello function" << endl;
}

};

int main()
{
void(a::*ptr)(void) = &a::mem_func;
int a::*ptr_num = &a::a_;
a aa;
(aa.*ptr)();
aa.*ptr_num = 100;

getchar();
return 0;
}

 

 

2.lambda

[capture](params)opt->ret{body;}

capture:捕获列表 空、&、=、this

params:参数表

opt:函数选项

ret:返回值

body:函数体

完整的lambda表达式

auto f = [](int a) -> int{ return a+1; }

auto f = [](int a){ return a+1; }

 

实例:

//typedef int (*ptr)(int i);
using ptr = int (*)(int i);
int main()
{
//ptr f = [](int a){ return a + 100; };
//std::function<int(int)> f = [](int a){ return a + 1; };
//std::function<int(int)> f = std::bind([](int a){ return a / 10; }, std::placeholders::_1);
std::function<int(int)> f = func;
cout << f(100) << endl;
getchar();
return 0;
}

c++11 常用语法