C++11中default的使用】的更多相关文章

In C++11, defaulted and deleted functions give you explicit control over whether the special member functions are automatically generated. "=default" instructs the compiler to generate the default implementation for the function. Defaulted funct…
C++11中对类(class)新增的特性 default/delete 控制默认函数 在我们没有显式定义类的复制构造函数和赋值操作符的情况下,编译器会为我们生成默认的这两个函数: 默认的赋值函数以内存复制的形式完成对象的复制. 这种机制可以为我们节省很多编写复制构造函数和赋值操作符的时间,但是在某些情况下,比如我们不希望对象被复制, 在之前我们需要将复制构造函数和赋值操作符声明为private,现在可以使用delete关键字实现: class X { // - X& operator=(cons…
在c++11中,一个callable object(可调用对象)可以是函数指针.lambda表达式.重载()的某类对象.bind包裹的某对象等等,有时需要统一管理一些这几类对象,新增的function就是为此而生.function位于functional头文件,可以看做是那几类callable object的抽象表示. #include<iostream> #include<functional> using namespace std; int f_add(int i,int j…
C++11 中值得关注的几大变化(详解) 原文出处:[陈皓 coolshell] 源文章来自前C++标准委员会的 Danny Kalev 的 The Biggest Changes in C++11 (and Why You Should Care),赖勇浩做了一个中文翻译在这里.所以,我就不翻译了,我在这里仅对文中提到的这些变化"追问为什么要引入这些变化"的一个探讨,只有知道为了什么,用在什么地方,我们才能真正学到这个知识.而以此你可以更深入地了解这些变化.所以,本文不是翻译.因为写…
本文分析的是llvm libc++的实现:http://libcxx.llvm.org/ C++11中的各种mutex, lock对象,实际上都是对posix的mutex,condition的封装.不过里面也有很多细节值得学习. std::mutex 先来看下std::mutex: 包增了一个pthread_mutex_t __m_,很简单,每个函数该干嘛就干嘛. class mutex { pthread_mutex_t __m_; public: mutex() _NOEXCEPT {__m…
源文章来自前C++标准委员会的 Danny Kalev 的 The Biggest Changes in C++11 (and Why You Should Care),赖勇浩做了一个中文翻译在这里.所以,我就不翻译了,我在这里仅对文中提到的这些变化“追问为什么要引入这些变化”的一个探讨,只有知道为了什么,用在什么地方,我们才能真正学到这个知识.而以此你可以更深入地了解这些变化.所以,本文不是翻译.因为写得有些仓促,所以难免有问题,还请大家指正. Lambda 表达式 Lambda表达式来源于函…
Solaris 11发布了好几个月了,用了后感觉好多配置的东东变化不小,写写自己遇到的问题和大家分享一下, 1,如何设置root密码 Solaris 11中root作为一个Role来存在,已经不能直接用root来登陆系统了,必须用系统安装时创建的用户来su成root,那root的密码 是什么呢?root的密码是用创建的用户做第一次su时进行设置的,比如您创建的用户是aa,那就用这个用户su,然后输入aa的密码, 系统会提示输入新的root密码. 2,如何设置静态ip solaris 11中新增加…
http://blog.jobbole.com/103669/ C++11 中的 Defaulted 和 Deleted 函数 2016/07/21 · C/C++, 开发 · C++ 分享到:3   原文出处: IBM/卢昉    本文将介绍 C++11 标准的两个新特性:defaulted 和 deleted 函数.对于 defaulted 函数,编译器会为其自动生成默认的函数定义体,从而获得更高的代码执行效率,也可免除程序员手动定义该函数的工作量.对于 deleted 函数, 编译器会对其…
随着Vsisual Studio 2013 RC版的放出,之前承诺的对C++ 11语法支持已经全部完成,本文是C++ 11中我喜欢的语法系列的最后一部分(一),(二). 非静态成员直接初始化 在C++ 03的时候,非静态成员变量只能在对象的构造函数里初始化,例如: struct A    {        int m;        A() : m (7) { }    }; 当对象成员比较多的时候,这个对象成员的初始化是非常难看的.尤其是在构造函数较多的情况下,由于C++ 03不支持委托构造函…
本文主要介绍了C++11中的移动语义与右值引用, 并且对其中的一些坑做了深入的讨论. 在正式介绍这部分内容之前, 我们先介绍一下rule of three/five原则, 与copy-and-swap idiom最佳实践. 本文参考了stackoverflow上的一些回答. 不能算是完全原创 rule of three/five rule of three是自从C++98标准问世以来, 大家总结的一条最佳实践. 这个实践其实很简单, 用一句话就能说明白: 析构函数, 拷贝构造函数, =操作符重载…
上一篇分析了c语言的函数调用栈情况,知道了c语言的函数调用机制后,我们来看一下,linux0.11中起动部分的代码是如何从汇编跳入c语言函数的.在LINUX 0.11中的head.s文件中会看到如下一段代码(linux0.11的启动分析部分会在另一部分中再分析,由于此文仅涉及c与汇编代码的问题,). after_page_tables: pushl $ # These are the parameters to main :-) pushl $ pushl $ pushl $L6 # retur…
C++ 11 中的右值引用 右值引用的功能 首先,我并不介绍什么是右值引用,而是以一个例子里来介绍一下右值引用的功能: #include <iostream>    #include <vector>    using namespace std;    class obj    {    public :        obj() { cout << ">> create obj " << endl; }        ob…
ios中的block 可以说是一种函数指针,但更确切的讲,其实际上其应该算是object-c对C++11中lambda的支持或者说是一个语言上的变体,其实际内容是一样的,C++的lambda我已经有简介过,现在说下ios中的block Block的实际行为和Function很像,最大的差别是在可以存取同一个Scope的变量值.Block实体形式如下: ^(传入参数列){行为主体}; Block实体开头是“^”,接着是由小括号所包起来的参数列(比如 int a, int b, int c),ret…
提示:HttpWatch现已更新至v9.1.8,HttpWatch v9.1及以上的版本现都已支持Windows 7,8,8.1和IE 11. 如果你的HttpWatch专业版授权秘钥允许进入version 9.x,你就可直接下载并运行最新的安装程序来实现升级. EPM(增强保护模式)暂不支持 你可能会遇到这种情况:HttpWatch当前版本与EPM模式不兼容,这在 Windows 8.1中第一次是默认启动的,但在后面的升级中将默认为禁止. 在EPM模式下安装HttpWatch将出现以下消息:…
C++11中的右值引用 May 18, 2015 移动构造函数 C++98中的左值和右值 C++11右值引用和移动语义 强制移动语义std::move() 右值引用和右值的关系 完美转发 引用折叠推导规则 特殊模板参数推导规则 解决完美转发问题 引用 在C++98中有左值和右值的概念,不过这两个概念对于很多程序员并不关心,因为不知道这两个概念照样可以写出好程序.在C++11中对右值的概念进行了增强,我个人理解这部分内容是C++11引入的特性中最难以理解的了.该特性的引入至少可以解决C++98中的…
原文地址:C++中的Lambda表达式 作者:果冻想 一直都在提醒自己,我是搞C++的:但是当C++11出来这么长时间了,我却没有跟着队伍走,发现很对不起自己的身份,也还好,发现自己也有段时间没有写C++代码了.今天看到了C++中的Lambda表达式,虽然用过C#的,但是C++的,一直没有用,也不知道怎么用,就可怜的连Lambda语法都看不懂.好了,这里就对C++中的Lambda进行一个简单的总结,就算是对自己的一个交代,我是搞C++的,我是一个C++ programmer. 一段简单的Code…
看了很多篇文章,现在终于搞懂了C++ 中的右值以及std::move   左值和右值最重要的区别就是右值其实是一个临时的变量 在C++ 11中,也为右值引用增加了新语法,即&&   比如如下代码: void testFunc(int &i ) { std::cout<<"reference test func int"<<std::endl; } void testFunc( int &&i ) { std::cout&l…
[update: 关于左值右值的另一点总结,请参看这篇] 一. move 关于 lvaue 和 rvalue,在 c++11 以前存在一个有趣的现象:T&  指向 lvalue (左传引用), const T& 既可以指向 lvalue 也可以指向 rvalue.但却没有一种引用类型,可以限制为只指向 rvalue.这乍看起来好像也不是很大的问题,但实际与看起来不一样,右值引用的缺失有时严重限制了我们在某些情况下,写出更高效的代码.举个粟子,假设我们有一个类,它包含了一些资源: class…
原文出处:http://kuring.me/post/cpp11_right_reference May 18, 2015 移动构造函数 C++98中的左值和右值 C++11右值引用和移动语义 强制移动语义std::move() 右值引用和右值的关系 完美转发 引用折叠推导规则 特殊模板参数推导规则 解决完美转发问题 引用 在C++98中有左值和右值的概念,不过这两个概念对于很多程序员并不关心,因为不知道这两个概念照样可以写出好程序.在C++11中对右值的概念进行了增强,我个人理解这部分内容是C…
在C++11中可以使用std::to_string()函数将数值转换为string格式,十分方便. 以下部分来选自cplusplus.com. std::to_string string to_string (int val); string to_string (long val); string to_string (long long val); string to_string (unsigned val); string to_string (unsigned long val); s…
VC++2010已经支持regex了, 能够用来编译下述代码. #include <string> #include <regex> #include <iostream> using namespace std; /* 測试C++11中的正則表達式. */ int main() { //定义正則表達式,匹配时间格式 regex testRegex("[0-9]{2}:[0-9]{2}:[0-9]{2}\\.[0-9]{3}"); //要匹配的字符串…
c++11新增的容器1:array array最早是在boost中出现:http://www.boost.org/doc/libs/1_61_0/doc/html/array.html 当时的初衷是希望提供一个在栈上分配的,定长数组,而且可以使用stl中的模板算法. array的用法如下: #include <string> #include <iterator> #include <iostream> #include <algorithm> #inclu…
c++11新语法1: auto关键字 c++11 添加的最有用的一个特性应该就是auto关键字. 不知道大家有没有写过这样的代码: std::map<std::string, std::vector<std::shared_ptr<std::list<T> > > > map; std::map<std::string, std::vector<std::shared_ptr<std::list<T> > > >…
iOS 11在状态栏区域带来了一些新的,也许是不直观的行为,这对使用Apache Cordova或Ionic等工具的开发人员尤为重要.特别是,这种行为变化会影响任何基于Web的应用程序,这些应用程序在为iOS 11构建时使用fixed定位标题栏.此文章可帮助您了解iOS 11中的Webview视口. 注意:现有应用程序将继续工作,因为它们始终具有对其视口行为的更改.这只会影响使用Xcode 9和iOS 11的目标编译的应用程序. 要了解这些变化,我们需要看看它的历史. 状态栏与安全区 在早起版本…
在 OS X 10.11 中安全倾倒垃圾桶这个功能已经被取消了.是因为 SSD 闪存硬盘的原因 . 安全删除操作并不能安全清除. 所以就直接取消了. 但是其实其实还是可以在系统内使用安全删除功能的. 保证删除的文件安全,减少被数据恢复的风险. 需要使用 srm 这个命令. srm -v 是安全删除文件 srm -rv 是安全删除目录 然后打开终端然后输入命令后 空格, 将要安全删除的文件或者目录拖拽到终端窗口再确认即可.…
# 背景正如我们所知道的在JDK 11中即将迎来ZGC(The Z Garbage Collector),这是一个处于实验阶段的,可扩展的低延迟垃圾回收器.本文整合了外网几篇介绍ZGC的文章和代码. # 目标* 每次GC STW的时间不超过10ms* 能够处理从几百M到几T的JAVA堆* 与G1相比,吞吐量下降不超过15%* 为未来的GC功能和优化利用有色对象指针(colored oops)和加载屏障(load barriers)奠定基础* 初始支持Linux/x64 # 描述ZGC的特点:*…
std::function 1. std::bind绑定一个成员函数 #include <iostream> #include <functional> struct Foo { void print_sum(int n1, int n2) { std::cout << n1 + n2 << '\n'; } ; }; int main() { Foo foo; auto f = std::bind(&Foo::print_sum, &foo,…
c++11中新支持了thread这个库,常见的创建线程.join.detach都能支持. join是在main函数中等待线程执行完才继续执行main函数,detach则是把该线程分离出来,不管这个线程执行得怎样,往下继续执行main函数. join操作会等待线程执行完毕,然后回收该线程资源,detach操作则不会等待线程完成,线程资源的回收由用init进程完成.(感谢https://www.cnblogs.com/liangjf/p/9801496.html的分享) 下面给出两个例子,一个是普通…
目录 理解智能指针的原理 智能指针的使用 智能指针的设计和实现 1.智能指针的作用 C++程序设计中使用堆内存是非常频繁的操作,堆内存的申请和释放都由程序员自己管理.程序员自己管理堆内存可以提高了程序的效率,但是整体来说堆内存的管理是麻烦的,C++11中引入了智能指针的概念,方便管理堆内存.使用普通指针,容易造成堆内存泄露(忘记释放),二次释放,程序发生异常时内存泄露等问题等,使用智能指针能更好的管理堆内存. 理解智能指针需要从下面三个层次: 从较浅的层面看,智能指针是利用了一种叫做RAII(资…
https://msdn.microsoft.com/zh-cn/library/ie/dn265032(v=vs.85).aspx 将突变事件和属性更改事件迁移到突变观察者 Internet Explorer 11 中的突变观察者提供了对突变事件支持的所有相同方案的快速执行替换,以及对属性更改事件支持的方案的替换. 你可以使用突变事件和/或属性更改事件迁移现有代码,以使用突变观察者. 监视 DOM 突变的传统技术 Mutation events 在 Web 平台中扮演了关键角色.这些事件允许…