C++11特性
本专栏主要介绍C++11的一些新的特性,原有的C++特性就不多介绍了,以代码为主。
caychen
码云:https://gitee.com/caychen/
github:https://github.com/caychen
展开
-
C++11特性(18):对齐方式
#include <iostream> //对齐支持//C++11标准定义alignof来查看数据的对齐方式//Microsoft定义为__alignof来查看数据的对齐方式struct EmptyStruct{};class EmptyClass{};class EmptyClass1;struct HowManyBytes{ char a; i...原创 2018-03-29 16:23:49 · 1291 阅读 · 0 评论 -
C++11特性(17):lambda函数
#include <iostream>#include <vector>#include <algorithm> //for_each...#include <functional> //plus<int>()...#include <numeric> //accumulate... //l...原创 2018-03-29 16:22:51 · 1290 阅读 · 0 评论 -
C++11特性(16):默认函数控制
#include <iostream> //默认函数控制/* 构造函数 拷贝构造函数 拷贝赋值函数 移动构造函数 移动拷贝函数 析构函数 ================================== operator , operator & operator &a...原创 2018-03-29 16:21:53 · 452 阅读 · 0 评论 -
C++11特性(15):指针空值nullptr
#include <iostream> //指针空值nullptr/* 规则: 1、所有定义为nullptr_t类型的数据都是等价的,行为也完全一致 2、nullptr_t类型数据可以隐式转换成任意一个指针类型 3、nullptr_t类型数据不能转换为非指针类型,即使使用reinterpret_cast<...原创 2018-03-27 12:12:06 · 1110 阅读 · 0 评论 -
C++11特性(14):原子类型与操作(2)及快速退出
#include <iostream>#include <cstdlib>#include <thread>#include <atomic> //C++11新头文件 for atomic_***原子数据类型 //原子操作及原子数据类型/* typedef enum memory_order { memory_ord...原创 2018-03-27 12:10:45 · 608 阅读 · 0 评论 -
C++11特性(13):原子操作及原子数据类型(1)
#include <iostream>#include <thread>#include <atomic> //C++11新头文件 for atomic_***原子数据类型#include <windows.h> // for Sleep //原子操作及原子数据类型//原子数据类型:std::atomic_***//C11的头...原创 2018-03-27 12:09:02 · 5178 阅读 · 0 评论 -
C++11特性(12):变长模板
#include <iostream>#include <cstdarg>#include <string> //回顾可变参数(变长函数)template<typename T>T SumOfValues(int nCount, ...){ T Sum = 0; va_list vl; va_start(v...原创 2018-03-26 13:51:15 · 1013 阅读 · 0 评论 -
C++11特性(11):常量表达式(值)
#include <iostream>#include <iterator> //for ostream_iterator //常量表达式//1、运行时常量性与编译时常量性即const与constexprconst int GetConst(){ return 1; } //运行时常量constexpr int GetConstexpr(){ return 1;...原创 2018-03-26 13:50:11 · 1313 阅读 · 0 评论 -
C++11特性(10):智能指针与垃圾回收
#include <iostream>#include <memory> //for unique_ptr、shared_ptr、weak_ptr //智能指针与垃圾回收void CheckWeakPtr(std::weak_ptr<int> & wp){ std::shared_ptr<int> sp = wp.loc...原创 2018-03-24 21:26:16 · 729 阅读 · 0 评论 -
C++11特性(9):强枚举类型enum
#include <iostream> namespace T //命名空间T{ enum Color{ Black, Gray, Green };}namespace S{ enum Size{ Small = 1, Middle, Large };}namespace //匿名命名空间(全局){ enum Color{Black,Bl...原创 2018-03-24 21:25:03 · 1358 阅读 · 0 评论 -
C++11特性(8):追踪返回类型、范围for
#include <iostream>#include <vector>#include <algorithm> //追踪返回类型template<typename T1, typename T2>auto Sum(const T1 &t1, const T2 &t2) ->decltype(t1 + t2){ ...原创 2018-03-24 21:23:51 · 418 阅读 · 0 评论 -
C++11特性(7):auto、decltype(自匹配类型)
#include <iostream>#include <vector> //auto和decltype推导double foo(){ return 0.0; }int& bar(){ int a = 0; return a; }float *bar1(){ float a = 0.0f; return &a; } class White{}...原创 2018-03-23 12:47:11 · 758 阅读 · 0 评论 -
C++11特性(6):POD类型
#include <iostream> /**********************************************************///测试类型是否是平凡的struct Trivial1{};struct Trivial2{ int a, b; }; struct Trivial3{ Trivial1 t1; ...原创 2018-03-22 22:48:20 · 604 阅读 · 0 评论 -
C++11特性(5):explicit、列表初始化
#include <iostream>#include <vector>#include <map> //1、显示转化操作符explicitstruct Rational1{ //没有explicit修饰的构造函数可以隐式调用,可以将某种类型隐式转化为类类型 Rational1(int n = 0, int d = 1):num(...原创 2018-03-22 22:46:53 · 897 阅读 · 0 评论 -
C++11特性(4):右值引用
#include <iostream> //右值引用//前瞻:浅拷贝和深拷贝class ShollowCopyClass{public: ShollowCopyClass() :i(new int(0)){} ShollowCopyClass(const ShollowCopyClass& s) :i(s.i){} //只是...原创 2018-03-22 22:45:04 · 522 阅读 · 0 评论 -
C++11特性(3):继承构造函数和委派构造函数
#include <iostream>#include <algorithm>#include <functional> #define _NONOTE //1、继承构造函数class A{public: A(int i) {} A(double d) {} A(int i, double d){} v...原创 2018-03-20 11:54:43 · 582 阅读 · 0 评论 -
C++11特性(2):快速初始化变量、final和override、模版函数
#include <iostream> struct init{ int a = 1; //1、快速初始化成员变量 //在成员快速初始化阶段时,不能使用()来初始化, //对于非静态成员变量只能使用=或者{}来进行快速初始化 std::string s{ "sss" }; //std::string s("aaa");----&g...原创 2018-03-20 11:53:29 · 590 阅读 · 0 评论 -
C++11特性(1):宏、static_assert、noexcept
#include <iostream> #include <string> #include <assert.h> //2、_Pragma(字符串字面量) //_Pragma("once") ===== #pragma once // //3、变长参数宏定义及__VA_ARGS__ //以省略号作为参数列表的最后一...原创 2018-03-15 17:19:53 · 620 阅读 · 0 评论