• 2024-09-24自梳理C++八股
    1.左右值引用的理解回答:“左右值引用是C++11引入的一项重要特性,用于优化资源管理和提升性能。具体来说:左值引用(LvalueReference):左值引用可以类比为对象的别名,它允许多个引用共享一个实体对象,常用于函数参数传递以避免对象拷贝。左值引用只能绑定到一个命名的持久对象,适合用
  • 2024-09-24左值 <->右值
    左值引用指向左值右值引用指向右值inta=5;int&ref_a=a;//左值引用指向左值,编译通过int&ref_a=5;//左值引用指向了右值,会编译失败int&&ref_a_right=5;//okinta=5;int&&ref_a_left=a;//编译不过,右值引用不可以指向左值ref_a_right=6;//右
  • 2024-09-22右值引用、转移和完美转发(刨析std::move的实现原理)
    文章目录0、类型和值类别1、左值2、右值2.1纯右值2.2将亡值3、左值引用和右值引用左值引用左值引用的特性常量左值引用的特性右值引用4、&&的特性4.1函数重载5、转移和完美转发5.1std::move5.2剖析move的实现std::remove_reference::type5.3forward0
  • 2024-09-20C++11
    1.C++11简介在2003年C++标准委员会曾经提交了一份技术勘误表(简称TC1),使得C++03这个名字已经取代了C++98称为C++11之前的最新C++标准名称。不过由于C++03(TC1)主要是对C++98标准中的漏洞进行修复,语言的核心部分则没有改动,因此人们习惯性的把两个标准合并称为C++98/03标准。
  • 2024-09-19C++笔记21•C++11的新特性•
       相比于 C++98/03,C++11则带来了数量可观的变化,其中包含了约140个新特性,以及对C++03标准中约600个缺陷的修正,这使得C++11更像是从C++98/03中孕育出的一种新语言。相比较而言,C++11能更好地用于系统开发和库开发、语法更加泛华和简单化、更加稳定和安全,不仅功能更强大,而
  • 2024-09-19std::move()与std::forward()
    在C++中,右值、移动构造函数、std::move()、和std::forward()都是与优化和内存管理相关的概念,特别是在避免不必要的拷贝时有很大作用。1.右值(Rvalue)右值通常是表达式中不具有持久性的临时对象。它是不能通过变量名来引用的值,通常出现在赋值语句的右侧。常见的右值有:字面值:如5
  • 2024-09-19C和指针:指针
    内存和地址程序视角看内存是一个大的字节数组,每个字节包含8个位,可以存储无符号值0至255,或有符号值-128至127。多个字节可以合成一个字,许多机器以字为单位存储整数,每个字一般由2个或4个字节组成。由于它们包含了更多的位,每个字可以容纳的无符号整数的范围是从0至4294967295(2^32-1)
  • 2024-09-16C++ 左值和右值
    一般而言,一个左值表达式表示的是一个对象的身份,而一个右值表达式表示的是对象的值。我们不能将其绑定到要求转换的表达式、字面常量或是返回右值的表达式(参见2.3.1节,第46页)。右值引用有着完全相反的绑定特性:我们可以将一个右值引用绑定到这类表达式上,但不能将一个右值引用
  • 2024-09-12C++面试题整理 1
    1.new和malloc什么区别?new和malloc都用于在堆上分配内存,new是c++中的关键字,分配内存后还会调用构造函数2.std中unorded_map,map,multimap有什么区别?unorderd_map中元素不按键值排序,底层数据结构是哈希表,相对map查询速度快,内存开销大map中元素按键值排序,底层数据结构是红黑
  • 2024-09-10C++ 中的左值引用和右值引用
    1、前言概念左值引用一直有这个概念。C++11中才出现了右值引用的概念。注意本文只讨论左值引用和右值引用,但需要提前了解一下左值和右值。//以下的a、p、*p、b都是左值inta=3;int*p=&a;*p;constintb=2;doublex=1.3,y=3.8;
  • 2024-09-05《深入理解 C++中的右值引用:开启高效编程新篇章》
    在C++的编程世界中,右值引用是一个强大而又富有特色的特性,它为程序员提供了更高效的资源管理方式和更灵活的编程手段。本文将带你深入探讨C++中的右值引用,揭示其独特的特点和强大的功能。一、标题背后的意义C++中的右值引用究竟有何特殊之处?为何它成为了C++编程中的热点
  • 2024-08-31【C++的创新性】C++11语法颠覆你的认知了吗?
    ​ 学习编程就得循环渐进,扎实基础,勿在浮沙筑高台   循环渐进Forward-CSDN博客Hello,这里是kiki,今天继续更新C++部分,我们继续来扩充我们的知识面,我希望能努力把抽象繁多的知识讲的生动又通俗易懂,今天要讲的是C++哈希~目录 循环渐进Forward-CSDN博客C++11简介
  • 2024-08-24C++基础/限定符及一些关键字在限定函数的作用
    在学习中发现对const在限定函数的作用有些模糊,以下为笔者的学习总结1.5cv限定符及一些关键字在限定函数的作用c(const)v(volatile)const:用于表示该函数不会改变类的成员变量,所以是可以修改全局变量的volatile:用于告诉编译器该对象可能会被程序外部修改#include<iostream>
  • 2024-08-24C++11
    类型推导类型推导是C++的一种特性,允许编译器自动推导变量的类型,而不需要显式地制定类型。autoauto用于让编译器自动推导变量类型,常见用法:基本示例:autox=10;与容器一起使用:vector<string>names={"Alice","Bob"};for(autoit=names.begin();it!=names.en
  • 2024-08-19【C++】看完就会--右值引用!!!
    右值引用一、什么是右值?什么是左值?二、右值引用三、右值引用的好处四、万能引用五、完美转发一、什么是右值?什么是左值?首先,当我们看到右值的时候,我们很自然的就会产生疑问?什么的右边呢?等号的右边吗?那么如果是按赋值=符号的右边来定义的话,那么,左值是不是就是=符号
  • 2024-08-18【重学c++primer】第五章第二节 深入浅出:左值和右值
    文章目录左值右值传统的左值和右值划分glvalueprvaluexvalue总结左值和右值的转换左值转右值decltype左值右值传统的左值和右值划分左值:英文为leftvalue,简写lvalue右值:英文为rightvalue,简写rvalue一个左一个右,这个左右的判定是针对什么呢?实际上是针对等
  • 2024-08-14【C++】————C++11
                                 作者主页:   作者主页                           本篇博客专栏:C++                
  • 2024-08-09第18 章探讨 C++新标准 移动语义和右值引用
    第18章探讨C++新标准移动语义和右值引用第18章探讨C++新标准移动语义和右值引用文章目录第18章探讨C++新标准移动语义和右值引用18.2移动语义和右值引用程序清单18.2useless.cpp18.2移动语义和右值引用现在介绍本书前面未讨论的主题。C++11支持移动语
  • 2024-08-07C++:C++11介绍
    ✨✨✨学习的道路很枯燥,希望我们能并肩走下来!文章目录目录文章目录前言一、C++11简介二 统一的列表初始化2.1{}初始化2.2std::initializer_list三声明3.1auto 3.2decltype  3.3nullptr四范围for循环 五智能指针 六STL中一些变化 七右
  • 2024-08-01左值有地址,为社么还要std::move()?
    我把左值传入函数,左值有地址不是可以直接进行移动吗,为什么还要转为右值?原因:一般函数都有设置左值引用的接口和右值引用的接口,右值就是为了传入参数后销毁原参数,左值引用就是为了保护原参数而进行深拷贝。所以一般想实现移动语义就用右值引用的接口。在C++中,移动语义的核心思
  • 2024-08-01C++ - 左值和右值的区别
    示例:来看一行简单的代码1inta=10;这行代码,"="左边就是左值,"="右边的则为右值,那他们到底有什么不同呢?如果是Java、PHP等后端同学,会称以左边的"a"为变量,右边的"10"为字面量,而到了C++这里,我们就需要对他理解更多一点。这行代码运行起来,是在系统内存中申
  • 2024-07-29【C++11】C++11新纪元:深入探索右值引用与移动语义
  • 2024-07-26学习日记-24/7/26
    对QT控件使用差很多,不全面。不太会看文档,自己对于新方法无法适应。内存泄漏的现象,如何检查代码中的内存泄露?已分配的内存空间在使用完毕后未被释放,导致可用内存减少并最终可能导致系统性能下降或程序崩溃。方法一:代码审查和静态分析工具(自己查)方法二:动态分析工具(Valgrind)
  • 2024-07-09C++八股(二)之C++11新特性
    一、C++11有什么新特性?⭐自动类型推导(TypeInference):引入了auto关键字,允许编译器根据初始化表达式的类型自动推导变量的类型。统一的初始化语法(UniformInitializationSyntax):引入了用花括号{}进行初始化的统一语法,可以用于初始化各种类型的对象,包括基本类型、数组、
  • 2024-07-08第2章 表达式
    第2章表达式2.1基础2.1.1基本概念一元运算符(unaryoperator):作用于一个运算对象,如取地址符(&)和解引用符(*);二元运算符(binaryoperator):作用于两个个运算对象,如相等运算符(==)和乘法运算符(*);三元运算符:作用于三个运算对象(?