Web开发中跨域的几种解决方案

DOM HTML HTTP JavaScript jQuery iframe JSON 跨域 CORS

这些办法大致可以分为两类: 一类是Hack,比如通过`title`, `navigation`等对象传递信息,JSONP可以说是一个最优秀的Hack。 另一类是HTML5支持,一个是`Access-Control-Allow-Origin`响应头,一个是`window.postMessage`。 跨域的正道还是HTML5提供的CORS头字段以及`window.postMessage`, 可以支持POST, PUT等HTTP方法,从机制上解决跨域问题。

C++11新特性:Lambda表达式

C++ Lambda 函数对象 闭包 作用域

标准C++库提供了诸如find, sort的工具函数,它们的Compare模板参数是一个典型的谓词函数。 但C++的函数中虽然可以定义内部类,但无法定义内部类模板,因此这个过程会比较麻烦。 为此C++11提供了Lambda表达式来简化谓词函数的定义和传递。

一个简单的Lambda函数是这样定义的:

[](int x, int y) -> int { return x + y; }
// 返回值可由 decltype(x + y) 推导出来,因此可以省略返回值声明
[](int x, int y) {return x+y; }

C++11有哪些新特性?

C++ 函数指针 智能指针 正则表达式 Lambda 构造函数 闭包 哈希表 Boost

C++是一门伟大的语言,永远给程序员最大的设计自由, 未使用的特性从不产生副作用,新版本永远完全兼容旧版本。 C++11先前被称作C++0x,即ISO/IEC 14882:2011,是C++编程语言的一个标准。

之前的C++标准包括C++98、C++03。 虽然此后的[C++14]才是C++的现行标准,但C++14旨在对C++11的小扩展(漏洞修复、功能改进),而C++11仍然是一个具有热度的关键词。

C++11的特性主要包括下面几个方面:

  • 提高运行效率的语言特性:右值引用、泛化常量表达式
  • 原有语法的使用性增强:初始化列表、统一的初始化语法、类型推导、范围for循环、Lambda表达式、final和override、构造函数委托
  • 语言能力的提升:空指针nullptr、default和delete、长整数、静态assert
  • C++标准库的更新:智能指针、正则表达式、哈希表等

本文就从这几个方面来介绍C++11中那些令人心动的新特性。

上一页 下一页