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

C++中的explicit关键字只能用于修饰只有一个参数的类构造函数 , 它的作用是表明该构造函数是显示的, 而非隐式的,跟它相对应的另一个关键字是implicit, 意思是隐藏的,类构造函数默认情况下为implicit(隐式). 关于explicit关键字,先看看MSDN上的解释: This keyword is a declaration specifier that can only be applied to in-class constructor declarations . An…
D3D 11到D3D 12的重大改进 Direct3D 12 的编程模型和 Direct3D 11大相径庭.在Direct3D 12中,应用程序和硬件靠得近多了,这在以前是从未有过的. 这让D3D12 变得前所未有的快速和高效.但是速度和效率提高的代价是,相比D3D11,Direct3D 12需要在应用程序中完成更多的任务. 显式同步处理 物理内存驻留管理 命令列表和命令集(Command list 和command bundle) 描述符堆和描述符表 从D11移植到D12 相关主题 Direc…
11 explicit 显式构造函数 explicit修饰的构造函数可用来防止隐式转换 class Test1 { public: Test1(int n) // 普通构造函数 { num=n; } private: int num; }; class Test2 { public: explicit Test2(int n) // explicit(显式)构造函数 { num=n; } private: int num; }; int main() { Test1 t1=12; // 隐式调用…
源文件内使用unordered_map时候,例如如下demo #include <unordered_map> void foo(const std::unordered_map<int,int> &) {} int main() { foo({}); } GCC版本大于或者等于4.9,会报如下错误 map2.cpp:7:19: error: converting to ‘const std::unordered_map<int, int>’ from init…
欢迎访问我的个人网站获取更好的阅读排版体验: [译] QUIC Wire Layout Specification - Frame Types and Formats | QUIC协议标准中文翻译(4) 帧类型和格式 | yoko blog (https://pengrl.com/p/47156/) 目录 Frame Types | 帧类型 STREAM Frame | 流类型帧 ACK Frame | ACK帧 STOP_WAITING Frame | 停止等待帧 WINDOW_UPDATE…
Snake.pro文件 1 #------------------------------------------------- 2 # 3 # Project created by QtCreator 2017-12-11T22:59:40 4 # 5 #------------------------------------------------- 6 7 QT += core gui 8 9 greaterThan(QT_MAJOR_VERSION, 4): QT += widgets…
/*Navicat MySQL Data Transfer Source Server : localhostSource Server Version : 50136Source Host : localhost:3306Source Database : ben500_info Target Server Type : MYSQLTarget Server Version : 50136File Encoding : 65001 Date: 2013-07-11 10:07:33*/ SET…
说到多线程编程,那么就不得不提并行和并发,多线程是实现并发(并行)的一种手段.并行是指两个或多个独立的操作同时进行.注意这里是同时进行,区别于并发,在一个时间段内执行多个操作.在单核时代,多个线程是并发的,在一个时间段内轮流执行:在多核时代,多个线程可以实现真正的并行,在多核上真正独立的并行执行.例如现在常见的4核4线程可以并行4个线程:4核8线程则使用了超线程技术,把一个物理核模拟为2个逻辑核心,可以并行8个线程. 并发编程的方法 通常,要实现并发有两种方法:多进程和多线程. 多进程并发 使用…
维基百科上面对于 lambda 的引入是如下描述的: 在标准 C++,特别是当使用 C++ 标准程序库算法函数诸如 sort 和 find.用户经常希望能够在算法函数调用的附近定义一个临时的述部函数(又称谓词函数,predicate function).由于语言本身允许在函数内部定义类型,可以考虑使用函数对象,然而这通常既麻烦又冗赘,也阻碍了代码的流程.此外,标准 C++ 不允许定义于函数内部的类型被用于模板,所以前述的作法是不可行的.C++11 对lambda的支持可以解决上述问题. lamb…
Item 1: Understand template type deduction. Item 2: Understand auto type deduction. Item 3: Understand decltype. Item 4: Know how to view deduced types. Item 5: Prefer auto to explicit type declarations. Item 6: Use the explicitly typed initializer i…
c++11中最重要的特性之一就是对多线程的支持了,然而<c++ primer>5th却没有这部分内容的介绍,着实人有点遗憾.在网上了解到了一些关于thread库的内容.这是几个比较不错的学习thread库的资源: Thread support library                    : http://en.cppreference.com/w/cpp/thread Cpp reference/thread                      : http://www.cpl…
C++11的enum class & enum struct和enum C++标准文档--n2347(学习笔记) 链接:http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2347.pdf 旧版enum存在的问题 1 问题1向整形的隐式转换 2 问题2无法指定底层所使用的数据类型 3 问题3enum的作用域 4 不同编译器解决该问题的方法不统一 enum class 和 enum struct 1 enum class 和 enum…
1->创建7个Thread,跑个非常大的循环.观察CPU void func(string &name) { ;i<0xFFFFFFFF;i++) { //cout << name << this_thread::get_id() << "running \n"; } } int main() { string thread_01_name("AThread"); string thread_02_name(&…
1.constexpr变量:声明为constexpr的变量一定是一个常量,新标准允许定义一种特殊的constexpr函数使得编译时就可计算结果,这样就能用constexpr函数去初始化constexpr变量. 2.类型别名:1.typedef     2.using SI = Sales_item;  //SI是Sales_item的别名声明,把等号左侧的名字规定成等号右侧类型的别名 3.auto:auto让编译器通过初始值来推算变量类型.auto i = 0, *p = &i; //ok  …
      C++11已不是新鲜技术,但对于我来说,工作中用得还不够多(前东家长时间使用gcc3.4.5,虽然去年升了4.8.2,但旧模块维护还是3.4.5居多:新东家用的是4.4.6,不能完整支持C++11,而且有内部有基础库早已支持了C++11 STL的部分功能),再加上自己的练习也写得少,了解仅是几点简单的皮毛,这里对C++11学习总结一番,期望对他人以及未来的我有点技术知识索引上的帮助.      首先,wiki是最全面的:https://en.wikipedia.org/wiki/C%…
转载:http://www.cnblogs.com/kedebug/p/3224561.html lambda 表达式的简单语法如下:[capture] (parameters) -> return value { body } 1.最简单的例子: #include <iostream> using namespace std; int main() { auto func = [] () { cout << "Hello world"; }; func(…
auto_ptr作为最早的智能指针,可以实现以RAII手法管理堆区对象,但它设计的本意只是简单的利用C++对于栈区对象的自动析构管理堆区对象, 并不像shared_ptr那样包含引用计数,可以在每次拷贝的时候多出一个“分身”.这时候,拷贝的语义就成了很大的问题(按理说直接禁掉可能好好些), 于是就出现了下面这个不伦不类的原型: ) throw(); auto_ptr (auto_ptr& a) throw(); template<class Y> auto_ptr (auto_ptr&…
homepage faq contribute bugs questions Git for Windows v2.11.0 Release Notes Latest update: December 1st 2016 Introduction These release notes describe issues specific to the Git for Windows release. The release notes covering the history of the core…
C++11 1.long long新类型 2.列表初始化 int t=0; int t={0}; int t(0); int t{0}; 注意:如果我们使用列表初始化有丢失信息的风险,则编译器报错 long double ld=3.1415926536; int a{ld},b={ld};//错误 int c(ld),d=ld;//正确,会丢失数据 3.空指针nullptr int *p1=nullptr; int *p2=0; int *p3=NULL;//尽量避免 4.constexpr类型…
在 <C++11 并发指南三(std::mutex 详解)>一文中我们主要介绍了 C++11 标准中的互斥量(Mutex),并简单介绍了一下两种锁类型.本节将详细介绍一下 C++11 标准的锁类型. C++11 标准为我们提供了两种基本的锁类型,分别如下: std::lock_guard,与 Mutex RAII 相关,方便线程对互斥量上锁. std::unique_lock,与 Mutex RAII 相关,方便线程对互斥量上锁,但提供了更好的上锁和解锁控制. 另外还提供了几个与锁类型相关的…
C++ Primer中文版(第5版)(顶级畅销书重磅升级全面采用最新 C++ 11标准) [美]Stanley B. Lippman( 斯坦利李普曼)  Josee Lajoie(约瑟拉乔伊 )  Barbara E. Moo (芭芭拉默)  著 王刚  杨巨峰译 ISBN 978-7-121-15535-2 2013年9月出版 定价:128.00元 864页 16开 编辑推荐 C++领域权威 潘爱民|孟岩作序,代表技术圈鼎力推荐 一线C++工程师腾讯Milo.微软刘未鹏|陈梓瀚.阿里李云|侯凤…
C++提供了关键字explicit,可以阻止不应该允许的经过转换构造函数进行的隐式转换的发生.声明为explicit的构造函数不能在隐式转换中使用. C++中, 一个参数的构造函数(或者除了第一个参数外其余参数都有默认值的多参构造函数), 承担了两个角色. 1 是个构造器 ,2 是个默认且隐含的类型转换操作符. 所以, 有时候在我们写下如 AAA = XXX, 这样的代码, 且恰好XXX的类型正好是AAA单参数构造器的参数类型, 这时候编译器就自动调用这个构造器, 创建一个AAA的对象. 这样看…
一,进程与线程 1.什么是线程 线程是操作系统能够进行运算调度的最小单位.它被包含在进程之中,是进程中的实际运作单位.一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执行不同的任务 一个线程是一个执行上下文,这是一个CPU的所有信息需要执行一系列的指令. 假设你正在读一本书,你现在想休息一下,但是你希望能够回来,恢复从你停止的位置.实现这一点的方法之一是通过草草记下页码.行号和数量.所以你读一本书的执行上下文是这三个数字. 如果你有一个室友,她使用相同的技术,她…
1 新类型 C++ 11新增了long long和unsigned long long,以支持64bit宽度: 新增char16_t和char32_t以支持16位和32位字符表示: 增加了“原始”字符串. 2 初始化 C++ 11扩展了大括号{}的适用范围,既可以用于基本类型,也可以用于自定义类型: int x = {5}; couble y{3.5}; short quar[5]{1, 2, 3, 4, 5}; int* p = new int[5]{1, 2, 3, 4, 5}; 创建对象时…
explicit构造函数是用来防止隐式转换的.请看下面的代码: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 class Test1 { public:     Test1(int n)     {         num=n;     }//普通构造函数 private:     int num; }; class Test2 { public:     explicit Test2(int n)…
原文标题:Ten C++11 Features Every C++ Developer Should Use 原文作者:Marius Bancila 原文地址:codeproject 备注:非直译,带个人感情色彩,有疑惑参看原文. This article discusses a series of features new to C++11 that all developers should learn and use. There are lots of new additions to…
今晚跟同学谈了一下智能指针,突然想要看一下C++11的智能指针的实现,因此下了这篇博文. 以下代码出自于VS2012 <memory> template<class _Ty> class shared_ptr : public _Ptr_base<_Ty> { // class for reference counted resource management public: typedef shared_ptr<_Ty> _Myt; typedef _Pt…
1.新增算术类型     longlong,最小不比long小,一般为64位. 2.列表初始化      int units_sold = {0};或者 int units_sold{0};非11标准下的C++中,只有特定的情况下才能使用该形式.  比如数组的初始化,类构造函数的初始化,结构体的填充.相比传统的赋值初始化,如果右侧的数值类型相对于左侧类型更大的话,侧对于这种窄化现象,编译器会 报错.如:int k = {3.14};一个double是8个字节,int一般是4个字节,这时编译器就会…
__func__宏 __func__返回当前的函数名,也可以返回class和struct名. /*返回函数名hello*/ const char* hello() { return __func__; } /*返回结构体名foo*/ struct foo { foo():name(__func){} const char* name; } __VA_ARGS__宏 可变参数宏 #define INFO(...) printf(__VA_ARGS) noexcept noexcept操作会阻止异常…
0. 摘要 近期读了一些关于C++11标准的材料. 本篇博客将从新标准的优点.与旧版本的区别和使用方法三个角度,大致介绍我对C++11的认识. C++11标准,原名C++0x, 是03版旧标准的更新.总结来说,新标准给我更加接近脚本语言的感觉.move语义的支持.auto关键字自动类型等新特性,使得C++11在性能和效率上比旧版本有更大优势. 我参考的博客和网页有: http://www.csdn.net/article/2012-05-15/2805585 http://stackoverfl…