首页 > 编程语言 >C++特性

C++特性

时间:2024-12-17 15:27:45浏览次数:6  
标签:std 右值 int auto 特性 C++ operator 引用

1.自动匹配类型(auto) 和 decltype(查询类型)

auto _a = 6;
std::cout<<typeid(decltype(_a)).name()<<std:send1;
步骤拆分:
1.auto根据初始化的数值6,自动推导类型为int
2.decltype根据 a 推导出类型为 int
结果:int

2.范围for

//范围for使用
std::vector<int> vector;
for (auto i:vectoz){
    std::cout<<i<<std:sendl; //将vector中含有的每个int打印出来
}

3.移动语义(窃取,修改所以不加eonst)和右值引用

//*****************右值引用**********************
//***右值引用会延长临时对象的声明周期
//***右值包含:字面量,返回非引用类型的函数调用,临时对象(在赋值运算结束时被销毁)

constexpr int fun(){
    return 6;
}
auto cc x= 100;
auto hc c = func();

//赋值运算返回引用是因为链式调用 a=b=c, 如果返回"值"则不成立
关于赋值运算重载返回的为什么是"引用"解析
A& operator=(const A&)()

返回"值"解析:
b=c就相当于(注:b对应this)
int x operator=(c){
    this = c;
    return *this;
}
a=b就相当于
int x operator(b=c){    //此时会出错,b=c返回临时值,但形参是左值引用,左值引用不能绑定到临时对象
    this=b;
    return *this;
}



//*****************移动语义**********************
移动语文主要用于移动构造函数,移动赋值运算符重载
A& operator=(const A&&){}

Myclass operator=(const Myclass& xx){
    std::cout<<"----output----";
    return *this;
}

MyClass (const Myclass&){}
MyClass(){}
MyClass& operator=(MyClass&& xx){
    if (this != &xx)    //为了避免自我赋值
    {

    }
    std::cout<<"--";
    return *this;
}

//移动构造
A(const A&&){}


4.std::move()用于将左值转右值

int a = 6;
int &af = a;         //正确
int &&aff = a;      //错误
int &&aff = std::move(a);    //正确
注:a是左值,6是右值

 

标签:std,右值,int,auto,特性,C++,operator,引用
From: https://blog.csdn.net/qq_50682852/article/details/144518980

相关文章

  • 在CodeBolcks+Windows API下的C++面向对象的编程教程——给你的项目中添加图标
    0.前言我想通过编写一个完整的游戏程序方式引导读者体验程序设计的全过程。我将采用多种方式编写具有相同效果的应用程序,并通过不同方式形成的代码和实现方法的对比来理解程序开发更深层的知识。了解我编写教程的思路,请参阅体现我最初想法的那篇文章中的“1.编程计划”:学习编程......
  • C++实时性和时延优化
    C++实时性和时延优化主要体现在如何通过代码、算法和系统设计上的调整,确保程序能够在预定时间内完成任务,特别是在对响应时间要求极高的系统中。实时性和时延优化对于嵌入式系统、硬实时应用、通信系统、游戏引擎等领域尤为重要。具体的优化策略包括以下几个方面:1. 减少内存分配......
  • 【MySQL】索引特性
    MySQL中的索引是用来提高数据库查询效率的一种数据结构。以下是一些MySQL索引的特性:1. 唯一性:• 唯一索引(UniqueIndex)确保索引列的值是唯一的,不允许有重复的值。2. 主键索引:• 每个表都有一个主键索引(PrimaryKey),它是一个特殊的唯一索引,并且每个表只能有一个主键......
  • C++ 智能指针
    目录内存泄漏内存泄漏分类(了解)如何检测内存泄漏(了解)如何避免内存泄漏智能指针的使用及原理RAIIstd::auto_ptr(转移管理权,不建议使用)std::unique_ptr(防止拷贝)std::shared_ptr(引用计数)make_shared()模拟实现shared_ptrstd::shared_ptr的循环引用(导致内存泄......
  • 打卡信奥刷题(435)用C++信奥B4006[普及组/提高] [GESP202406 四级] 宝箱
    [GESP202406四级]宝箱题目描述小杨发现了nnn个宝箱,其中第iii......
  • 在CodeBolcks+Windows API下的C++面向对象的编程教程——给你的项目中添加头文件和菜
    0.前言我想通过编写一个完整的游戏程序方式引导读者体验程序设计的全过程。我将采用多种方式编写具有相同效果的应用程序,并通过不同方式形成的代码和实现方法的对比来理解程序开发更深层的知识。了解我编写教程的思路,请参阅体现我最初想法的那篇文章中的“1.编程计划”:学习编程......
  • C++快速失败策略
    函数一种推荐的策略是,遇到错误时尽快退出。一般来说这个叫快速失败策略。比较懒的人很难一直遵循这个规则,所以不如直接写个宏吧。#include<iostream>//尽早退出#defineRET_IF(_CONDITION_,RET_VALUE,...)\do{\if(......
  • SSM高校社团学生会管理系统--47676(免费领源码)可做计算机毕业设计JAVA、PHP、爬虫、APP
    摘  要本论文基于SSM框架,设计和实现了一个高校社团学生会管理系统。该系统旨在提供一个全面、高效、智能的高校社团学生会管理平台,以便管理者可以迅速且便捷地进行各项管理工作,并及时向社团成员提供准确的社团信息。  该系统通过角色划分为社团成员、社团社长和管理员......
  • 在CodeBolcks+Windows API下的C++面向对象的编程教程——用面向对象的方法改写用向导
    0.前言我想通过编写一个完整的游戏程序方式引导读者体验程序设计的全过程。我将采用多种方式编写具有相同效果的应用程序,并通过不同方式形成的代码和实现方法的对比来理解程序开发更深层的知识。了解我编写教程的思路,请参阅体现我最初想法的那篇文章中的“1.编程计划”:学习编程......
  • c++容器调用clear会释放内存吗
    只有含reserve()/capacity()成员函数的容器才需要用swapidiom来释放空间,而C++里只有vector和string这两个符合条件。在C++11中可以直接使用shrink_to_fit()。list/deque/set/map等容器是没有reserve()和capacity()这两个成员函数的,因此swap是无用功(除非用......