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;
}

转载于:https://www.cnblogs.com/kaishan1990/p/6862249.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值