C++11 新特性
来源:互联网 发布:徐州软件测试招聘 编辑:程序博客网 时间:2024/05/17 08:39
C++11 维基百科
https://en.wikipedia.org/wiki/C%2B%2B11
C++11 常用语法
http://blog.csdn.net/suxinpingtao51/article/details/46726257
函数式编程
http://www.ruanyifeng.com/blog/2012/04/functional_programming.html
lambda表达式
http://www.cnblogs.com/zhuyp1015/archive/2012/04/08/2438176.html
例子
struct Student { unsigned ID; string name; Student(unsigned i, string n) : ID(i), name(n) { }};int main(){ Student a[] = { Student(2, "John"), Student(0, "Tom"), Student(1, "Lily") }; sort(a, a + 3, [](const Student& val1, const Student& val2) {return val1.ID < val2.ID; }); for_each(a, a + 3, [](const Student& val) {cout << val.ID << ' ' << val.name << endl; }); auto cmp = [](const Student& val1, const Student& val2) {return val1.name < val2.name; }; sort(a, a + 3, cmp); for(Student s: a) cout << s.ID << ' ' << s.name << endl; return 0;}
nullptr
http://www.cppblog.com/airtrack/archive/2012/09/16/190828.aspx
实例
#include <iostream>using namespace std;void fun(int a, int *p){ cout << "int *" << endl;}void fun(int a, int p) // 重载fun函数{ cout << "int" << endl;}int main(){ fun(1, NULL); // int fun(1, 0); // int fun(1, nullptr); // int * return 0;}
auto
C++11 重新定义了auto的用途
- 自动推断出类型
auto a; // 错误,没有初始化表达式,无法推断出a的类型 auto int a = 10; // 错误,auto临时变量的语义在C++11中已不存在, 这是旧标准的用法。 auto n = 100; // intauto x = 1.5; // doubleauto y = 1.3e12L; // long double
- auto返回值占位,主要与decltype配合使用,用于返回值类型后置时的占位。
template <typename T1, typename T2> auto compose(T1 t1, T2 t2) -> decltype(t1 + t2) { return t1+t2; } auto v = compose(2, 3.14); // v's type is double
应该注意到,auto并不能作为函数的返回类型,但是你能用auto去代替函数的返回类型,当然,在这种情况下,函数必须有返回值才可以。auto不会告诉编译器去推断返回值的实际类型,它会通知编译器在函数的末段去寻找返回值类型。在上面的那个例子中,函数返回值的构成是由T1类型和T2类型的值,经过+操作符之后决定的。
auto实际上是在编译时对变量进行了类型推导,所以不会对程序的运行效率造成不良影响
另外,似乎auto并不会影响编译速度,因为编译时本来也要右侧推导然后判断与左侧是否匹配
http://blog.csdn.net/huang_xw/article/details/8760403
https://my.oschina.net/wangxuanyihaha/blog/183151
委托构造函数
C++11 中构造函数可以调用同一个类的另一个构造函数
class foo {public: foo(){};};class boo : public foo { boo() : foo() {};};
#
- C+11 新特性
- [C++]C++11新特性
- 【C++】 C++11新特性
- 【C++】了解C++11新特性
- C++:C++11新特性详解(1)
- 12c新特性
- Objective-C新特性
- Objective-C新特性
- Objective-C新特性
- Objective-C新特性
- 12C新特性
- C#7.0新特性
- Objective-c新特性
- 【C/C++】C++11新特性:std::bind
- Delphi2009/C++Builder2009新特性
- C 99的新特性
- Objective-C 新特性
- Objective-C的新特性
- POJ-2240-Arbitrage(弗洛伊德|贝尔曼)
- Ext行号自增
- 最小化Spring XML配置
- Android异步更新UI的四种方式
- Eclipse快捷键自己的整理
- C++11 新特性
- 如何去除UISearchBar默认的灰色背景颜色
- 编程常用英文单词缩写整理
- Tomcat默认的Session持久化的效果
- 《高质量C++编程指南》摘录8
- POJ 1928 The Peanuts
- 漫谈iOS程序的证书和签名机制
- 用Swift写一个发送邮件的iOS用户反馈
- mysql:day5-详解多线程状态下的事务(连接池、动态代理技术)