首页 > 其他分享 >const 与 auto

const 与 auto

时间:2023-05-08 15:56:10浏览次数:16  
标签:p2 right const int auto 引用

  1. auto只能推断出类型,引用不是类型,所以auto无法推断出引用,要使用引用只能自己加引用符号

  2. auto关键字在推断引用的类型时:会直接将引用替换为引用指向的对象。其实引用一直是这样的,引用不是对象,任何使用引用的地方都可以直接替换成引用指向的对象

  3. auto关键字在推断类型时,如果没有引用符号,会忽略值类型的const修饰,而保留修饰指向对象的const,典型的就是指针

  4. auto关键字在推断类型时,如果有了引用符号,那么值类型的const和修饰指向对象的const都会保留。

#include <iostream>
#include <boost/type_index.hpp>

int main() {
    using boost::typeindex::type_id_with_cvr;
    int a = 10;
    int b = 20;

    const int* p1 = &a;
    p1 = &b;   // right
    *p1 = 30;  // wrong
    
    int* const p2 = &a;
    // p2 = &b;   // wrong
    *p2 = 40;  // right

    auto tp1 = p1;
    tp1 = &b;   // right
    *tp1 = 30;  // wrong

    auto tp2 = p2;
    tp2 = &b;   // right
    *tp2 = 40;  // right

    auto& tp3 = p2;

    const int c = 10;
    auto tc = c;

    // 输出 int const * (等价于 const int *)
    std::cout << type_id_with_cvr<decltype(tp1)>().pretty_name() << std::endl;
    // 输出 int *
    std::cout << type_id_with_cvr<decltype(tp2)>().pretty_name() << std::endl;
    // 输出 int
    std::cout << type_id_with_cvr<decltype(tc)>().pretty_name() << std::endl;
    // 输出 int * const &
    std::cout << type_id_with_cvr<decltype(tp3)>().pretty_name() << std::endl;

    return 0;
}

标签:p2,right,const,int,auto,引用
From: https://www.cnblogs.com/hacker-dvd/p/17381999.html

相关文章

  • 判断 auto 类型
    注意:先要提前安装好boost库#include<iostream>#include<boost/type_index.hpp>intmain(){ usingboost::typeindex::type_id_with_cvr; autox=100; std::cout<<type_id_with_cvr<decltype(x)>().pretty_name()<<std::endl; return......
  • 真的!@Autowired和@Resource注解使用的正确姿势,别再用错的了!
    介绍今天使用Idea写代码的时候,看到之前的项目中显示有warning的提示,去看了下,是如下代码?@AutowiredprivateJdbcTemplatejdbcTemplate;提示的警告信息FieldinjectionisnotrecommendedInspectioninfo:SpringTeamrecommends:"Alwaysuseconstructorbaseddependencyin......
  • const关键字
    1.const修饰普通变量constinta=10;a被视为常量2.const修饰指针inta=10;intconst*b=&a;此时b为常量指针,因为const修饰的是*b,所以指针的指向的内容不能变,指向可变,int*constc=&a;此时c指针常量,c的指向不可以变,但可以通过c来改变指向的内容3.const引用con......
  • 部署repmgr PG14集群<无autofailover>
    系统环境OS:CentOS7192.168.56.11node1192.168.56.12node2部署操作流程1.系统环境初始化echoredhat|passwdroot--stdinecho-e"192.168.56.11node1">>/etc/hostsecho-e"192.168.56.12node2">>/etc/hostsse......
  • AutoGPT:有手就会的安装教程
    AutoGPT是什么Auto-GPT是一个实验性开源应用程序,展示了GPT-4语言模型的功能。该程序由GPT-4驱动,将LLM的“思想”链接在一起,以自主实现您设定的任何目标。作为GPT-4完全自主运行的首批示例之一,Auto-GPT突破了AI的可能性界限。AutoGPT是github上最火的GPT项目,......
  • PyautoGui
     1importtime2importpyautogui34#Size(width=2560,height=1600)获取屏幕像素5pyautogui.size()67#Point(x=1595,y=907)获取当前鼠标坐标,返回x,y轴8x,y=pyautogui.position()9print(x,y)1011#查看该像素点是否在屏幕内,返回True/Fals......
  • static,和auto关键字
    这两个关键字是一对的static表示静态publicstaticvoidmothed1(){stringtext="234.567891230";//Console.WriteLine(int.Parse(text));//必须是对应的类型Console.WriteLine(double.Parse(text));C......
  • Failed to auto-configure a DataSource: 'spring.datasource.url' is not specified
    导入一个新的springbootmaven项目启动一直报这个错,查出来的答案都说是加注解把数据库扫描给排除掉,这种方式其实有点鸵鸟,项目原先是没问题的,现在导入到自己的环境启动不起来,那肯定是不能去改动代码的。排查了一遍,发现是项目中的resources文件没有指定成资源文件,所以找不到数据库......
  • iThinkAir与AutoGPT
    AutoGPT是一个Python开源应用程序,由SignificantGravitas团队开发。它相当于一个高级AI助理,和只会一问一答的ChatGPT不同。当AutoGPT接收到一个指令时,它会主动把这个指令拆解成不同的子任务,然后再主动地去逐一完成这些任务。如果有必要,它还会自己给自己布置额外的任务,以更好地完成......
  • const_cast,static_cast,dynamic_cast,reinterpret_cast的区别(转)
    原文:https://www.cnblogs.com/fancy-xt/p/5339177.htmlC++继承了C中的隐式和显式转换的方式。但这种转换并不是安全和严格的,加上C++本身对象模型的复杂性,C++增加了四个显示转换的关键字。(C++是强类型语言)经过编码测试,小结如下:const_cast:仅用于去掉完全同类型的const,volatile......