关于C++11的学习笔记

C++学习笔记——C++11 文章目录P1 演进、环境与资源P2 Variadic TemplatesP3 Spaces in Template Expressions,nullptr and std::nullptr_t,automatic type deductionP4 Uniform InitializationP5、P6 initializer_listP7 *explicit* for constructors taking more than one argumentP8 Range based for statement 阅读详情

void fun() noexcept {};
void fun() final;//refuse
void fun() override;//must
默认模板参数:从右往左定义
继承构造函数 using base::f,派生类无法使用基类的非虚函数。所以using这一语法也可以被用到构造函数中。但要注意的是如果构造函数是私有的或者是虚继承,派生类将不会提供默认构造函数。同时我们还要解决继承冲突问题,方法是加上派生类的自定义构造函数。
委派构造函数:用于解决构造函数中调用重复函数的问题。但其自身不能有初始化列表。需要注意的是目标构造函数总是先于委派构造函数执行。可以进行链式委派,但要避免出现委派环。

class info{
public:
    info(){Initreset();}//目标构造函数
    info(char a):info(){this.a = a;}//委派构造函数
    info(int b): info(){this.b = b;}
private:
    void Initreset(){}
    char a{'a'};
    int b{1};
}

完美转发:这里涉及到引用折叠(一旦定义中出现左值引用,引用折叠总是优先折叠为左值引用),保证引用的类型不会改变。定义为一个函数模板向它调用的函数传递参数时保持参数的左值或右值。
模板的别名:

template<typename T> using MapString = Map<T, char*>;
MapString<int> number;

decltype:根据也只能根据表达式推导类型。一般和using连用,为该类型定义别名。而typeid(变量).name打印该变量名字。这用在编译和调试,或者缩短类型名时很有作用。
decltype推导四规则:
1. 如果e是一个没有带括号的标记符表达式或者类成员访问表达式,那么的decltype(e)就是e所命名的实体的类型。此外,如果e是一个被重载的函数,则会导致编译错误。
2. 否则 ,假设e的类型是T,如果e是一个将亡值,那么decltype(e)为T&&
3. 否则,假设e的类型是T,如果e是一个左值,那么decltype(e)为T&。
4. 否则,假设e的类型是T,则decltype(e)为T。
而(e)标识为一个左值。则对应规则3。

int i=1;
decltype((i)) b = 2;//这里返回左值引用。

对于cv限制符,decltype可以带走推导,但是其成员不会继承cv限制符。
volatile关键字:用于表示该关键字修饰的变量可以被编译器未知的因素更改,因此编译器对访问该变量的代码就不再进行优化,当要求使用 volatile 声明的变量的值的时候,系统总是重新从它所在的内存读取数据。
强枚举类型:type class typename{};或者 type class typename:int {};
智能指针:这里主要介绍unique_ptr和shared_ptr,这两个指针类型实际上是模板类型,在使用前要先实例化。
unique_ptr:顾名思义,这是一个不能与他人分享对象内存的指针。

unique_ptr<int> p1(new int(11));//使用前要像一般指针一样分配内存。
unique_ptr<int> p2 = p1;//不能共享p1的内存
unique_ptr<int> p3 = move(p1);//可以通过move转移所有权

shared_ptr:顾名思义,这是一个可以与他人分享内存的指针类型,他内置了一个引用计数器,只有当计数器为0时才会释放内存。

shared_ptr<int> p1(new int(11));
shared_ptr<int> p2 =p1;
p1.reset();//只有当指针调用reset函数时释放内存。

lambda表达式:
语法格式:[capture](parameter)mutable->type{statement}
capture为捕捉列表,捕捉在上下文中出现的变量以供lambda表达式使用。
捕捉语法如下:
1. [var]表示值传递方式捕捉变量var;
2. [=]表示值传递方式捕捉所有父作用域的变量(包括this);
3. [&var]表示引用传递捕捉变量var;
4. [&]表示引用传递方式捕捉所有父作用域的变量(包括this);
5. [this]表示值传递方式捕捉当前的this指针。
要注意的是捕捉时不能出现重复变量,即如果你选择捕捉全部的引用类型,就不能又单独捕捉类型a。
parameter为函数调用时传入的参数列表。
mutable修饰符:默认情况下,Lambda函数总是一个const函数,mutable可以取消其常量性。在使用该修饰符时,参数列表不可省略(即使参数为空);
要注意的是:
按值传递的捕捉方式传进去的是一个常量,一旦初始化就不会再改变。按引用传递仍可以使用父作用域中的值。
由于默认情况下的lambda表达式是const函数,则其不能改变参数的值。
C++函数闭包:
闭包是带有上下文的函数。说白了,就是有状态的函数。一个函数,带上了一个状态,就变成了闭包了。那什么叫 “带上状态” 呢? 意思是这个闭包有属于自己的变量,这些个变量的值是创建闭包的时候设置的,并在调用闭包的时候,可以访问这些变量。所以上文提到的lambda表达式是闭包的一种。而更直接的是重载operator()函数。
追踪返回类型:function()->type

【C++11】C++11学习笔记总结 C++11学习笔记 阅读详情

相关推荐

有限元中的对称魔法:用1/6模型算整个涡轮叶片(含MATLAB代码)

本文深入解析了有限元分析中针对循环对称结构的高效求解策略。通过利用涡轮叶片等结构的几何重复性,仅需对1/6基本扇区建模并施加循环对称条件,即可精确推演整体力学行为,大幅降低计算规模。文章从数学原理推导到MATLAB代码实现,提供了完整的实战指南,适用于旋转机械的静力、模态及谐响应分析。

fire9的博客 310

[cpp]c++11学习笔记-moden c++

本文主要介绍并学习C++11,14,17新的内容,供老鸟、菜鸟共同学习。

haily笔记 1227

Unity中5分钟实现3D高斯泼溅渲染:从原理到实战部署

3D高斯泼溅(3D Gaussian Splatting)是一种新兴的神经渲染技术,它通过显式地使用大量3D高斯椭球来表示场景,革新了传统的体渲染和神经辐射场(NeRF)方法。其核心原理是将这些3D高斯投影到2D屏幕并进行快速光栅化与Alpha混合,从而绕过了耗时的光线步进,实现了极高的渲染效率。这项技术的价值在于,它能够在消费级GPU上达到实时甚至超实时的帧率,同时保持紧凑的数据表达和惊人的视觉细节,极大地降低了高质量3D重建与渲染的门槛。在应用场景上,它正快速渗透到数字孪生、虚拟现实、文化遗产数字化以及

weixin_29474431的博客 274

C++11学习笔记(1)

注:本人所有学习笔记多来自各种书籍原著,C++11学习笔记根据《C++Primer (第五版)》整理,仅供个人复习使用。 1.读入数量不定的输入数据 #include<iostream> int main() { int sum = 0, value = 0; //读取数据直到遇到文件尾 while(std::cin >> value) ...

XRN的博客 335

Halcon VariableInspect (变量检查拓展)安装指南

网址2;

T 964

在Simulink中构建感应电机的时滞补偿控制模型,并通过仿真验证不同补偿策略的有效性

核心优势Smith预估器可有效补偿已知时滞,提升系统稳定性。动态PID调整适用于时变时滞的初步补偿。扩展方向自适应时滞估计:结合Luenberger观测器实时估计时滞。鲁棒控制:引入H∞控制或滑模控制抑制参数不确定性。网络化时滞补偿:结合知识库[2]的网络延迟模型,实现端到端补偿。

amy_mhd的博客 190

深入应用c++11读书笔记--使用c++11让程序更简洁、更现代-1

c++11

skyztttt的专栏 2675

[QMT量化交易小白入门]-二十八、有了回测年化收益好的策略,如何在QMT量化实盘呢(附python代码解析)

本专栏主要是介绍QMT的基础用法,常见函数,写策略的方法,也会分享一些量化交易的思路,大概会写100篇左右。QMT的相关资料较少,在使用过程中不断的摸索,遇到了一些问题,记录下来和大家一起沟通,共同进步,自己淋过雨了,希望大家都有一把伞。

木头大左的博客 2927

侯捷c++11课程学习笔记

文章目录decltypelambdauniform initializationinitializer_listvariadic tmplates=default,=delete右值引用与左值引用移动语义与完美转发移动语义写一个move aware class完美转发智能指针auto_ptr(c++11已弃用)unique_ptrshared_ptrweak_ptr decltype 使用它让编译器来推测出一个表达式的类型,相当于typeof 三个用途: ①用来声明return type ②用于元编程

dsaaf21的博客 976

基于Playwright和反爬虫规避技术的雪球股票讨论数据采集方案

随着量化投资和社交投资的兴起,雪球作为中国领先的投资社交平台,其用户讨论数据成为研究市场情绪的重要来源。本文将详细介绍如何使用最新的Playwright技术和反爬虫规避策略,构建一个高效、稳定的雪球股票讨论爬虫系统。本文详细介绍了基于Playwright的雪球股票讨论爬虫实现方案,涵盖了从基础配置到高级反爬虫策略的各个方面。AI驱动的反爬虫对抗更智能的请求调度算法区块链技术在数据溯源中的应用联邦学习在数据采集中的运用。

2201_76125261的博客 1009

Qwen2-VL出现RuntimeError: CUDA error: too many resources requested for launch CUDA kernel errors的解决方案

本文主要介绍了Qwen2-VL出现RuntimeError: CUDA error: too many resources requested for launch CUDA kernel errors的解决方案,希望能对使用Qwen2-VL的同学们有所帮助。 文章目录 1. 问题描述 2. 解决方案

weixin_43178406的博客 13万+

C++11学习笔记(五)

【指针空值——nullptr】 #include using namespace std; void f(char* c) { cout << "invoke f(char*)" << endl; } void f(int i) { cout << "invoke f(int)" << endl; } int main() { f(0); // f(

my_adu的专栏 1695

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

[cpp]c++11学习笔记-std function

std::function类似于一个函数对象或函数指针,通过模板的方式定义,相比c中的函数指针和c++中的函数对象,更加的直观、简洁。

haily笔记 1058

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

[cpp]C++11学习笔记-chrono

chrono是一个时间库,提供有时间段,时间点,系统时钟相关功能。

haily笔记 1151

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

[cpp]c++11学习笔记-std bind

std::bind实现函数绑定功能,类似于给函数起一个别名,通过该对象,可以调用绑定函数。

haily笔记 1081

C++11学习笔记——Type Support

其实主要还是对C++的STD库的学习吧,虽然用的不少但是对C++的全貌还不太了解。 参考这个网站http://en.cppreference.com/w/cpp/开始学习,自己敲敲代码玩。 一、Type Support 类型支持 主要包括3个部分:基本类型、RTTI、萃取技术(traits)。 1.Basic types 基本类型 1.1 Additional bas

lucifer886的专栏 838

[cpp]c++11学习笔记-std mutex and condition

mutex用法 condition用法

haily笔记 974

[cpp].c++11学习笔记-std thread

std::thread用于启动线程,可以用作跨平台的线程库。 它启动线程的方式很灵活,可以支持C函数,类成员函数,类静态函数等。

haily笔记 640

c++ primer plus学习笔记_第11章 使用类

c++ primer plus>第六版。

编程驴子的博客 755

C++11学习笔记

申明: ​ 这是 C++2.0(C++11 和 C++14) 新特性的笔记,来自于观看过的一些视频教程、网上博文和C++方面的书籍,可能还缺少一些知识,这里只是对现阶段本人所掌握的知识进行整理归纳,日后还会补充。 笔记里的 ctor是构造函数,dctor是析构函数 一、C++版本及一些学习网站 1.1 C++ Standard(规格)的演化 C++98 1.0版本 C++03 TR1 C++11 2.0版本 C++14 2.0版本 C++2.0新特性包

qq_43755653的博客 2236

C++11学习笔记(变量和基本类型)

近来在学习C++11新标准,在学习的过程中发现,有一些知识点仅仅只是看一遍是完全不能够立马掌握的,而后面再去找一遍也较为麻烦,因此留下一些学习的笔记,以便于温习和查阅。

pengkai1207的博客 435

C++11 引用、右值引用、移动语义学习笔记

C++11 中的引用、左值右值、移动语义等基础概念介绍

Vallelonga的博客 602

C++11学习笔记(2)

注:本人所有学习笔记多来自各种书籍原著,C++11学习笔记根据《C++Primer (第五版)》整理,仅供个人复习使用。 1.字面值常量 以0开头的整数代表八进制数,以0x或0X开头的代表十六进制数。整型字面值具体的数据类型由它的值和符号决定。默认情况下,十进制字面值是带符号数,八进制和十六进制字面值既可能是带符号的也可能是不带符合的。类型short没有对应的字面值。 字符串字面值的类型实际...

XRN的博客 387

【C++】学习笔记——C++11_1

一般在模板情况下,我们不知道接下来要定义的变量是什么类型,我们就可以借助这个关键字,他会推导类型,然后根据这个类型来定义变量。在C++11中,扩大了用大括号括起的初始化列表的使用范围,使其可用于所有的内置类型和用户自定义的类型,使用初始化列表时,可添加等号。传统的C++语法中就有引用的语法,而C++11中新增了的右值引用语法特性,所以从现在开始我们之前学习的引用就叫做。语法上:引用都是别名,不开空间,左值引用就是给左值取别名,右值引用就是给右值取别名。左值引用就是给左值的引用,给左值取别名。

m0_69828905的博客 1179

C++11 学习笔记

对方的头文件,因为两个类相互引用,不管哪个类在前面,都会出现有一个类未定义的情况,所以可以提前声明一个类,而类的声明就是提前告诉编译器,所要引用的是个类,但此时后面的那个类还没有定义,因此无法给对象分配确定的内存空间,因此只能使用类指针。是存储指向动态分配(堆)对象指针的类,用于生存期控制,能够确保在离开指针所在作用域时,通过使用引用计数自动正确地销毁动态分配的对象,防止内存泄漏,使用时需要引用头文件。将对象的状态或者所有权从一个对象转移到另一个对象,只是转移,没有内存的搬迁或者内存拷贝,

qq_40167866的博客 259
上一篇: C++关于虚类,虚函数以及友元的知识
下一篇: 区块链基础知识学习记录
hellowangld
博客等级 码龄10年 15粉丝 46原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

hellowangld

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值