首页 > 其他分享 >const和constexpr

const和constexpr

时间:2023-04-28 09:34:29浏览次数:29  
标签:const int constexpr 数组 arg 长度

    int a = 10;
    const int& b = a;
    a = 20;
    std::cout << b << std::endl;//输出为20,表示虽然b用const修饰不能直接修改b但是可以通过修改b的引用a来修改b

    int a1 = 10;
    constexpr int& b1 = a1;//这样写会提示错误

c++11使用的constexpr更加强调常量,而之前的const更多是强调只读。因此遇到确定是常量的时候应该声明为constexpr。

比如使用函数传参时,int func(const int x)这里只是表示传入的x是只读的并不表示是一个常量,在该函数中使用x来声明数组长度会报错。如果使用在函数中再次使用const int a=x;此时的a可以作为数组长度。

 

constexpr int sqr1(int arg){//可用作数组长度
    return arg*arg;
}
const int sqr2(int arg){//不可用作数组长度
    return arg*arg;
}

 

标签:const,int,constexpr,数组,arg,长度
From: https://www.cnblogs.com/hailanben/p/17360953.html

相关文章

  • let 和 const的区别
    let和const的区别在JavaScript中,let和const都是用来声明变量的关键字,它们的主要区别在于变量的可变性和作用域范围。let声明的变量是可变的(mutable),可以重新赋值,但不能重新声明。const声明的变量是不可变的(immutable),不能重新赋值,也不能重新声明。letx=10;x=20......
  • const关键字_常量指针与指针常量
    变量被const修饰,能且仅能被赋值一次。指针被const修饰,只在初始化时指向一个对象,且不能更改指向常量:不能被二次赋值constinta;intconsta;常量指针和指针常量constint*p;//*p不能被二次赋值int*constp;//p不能被二次指向constint*constp;//*p不能第二次赋值,指针p不......
  • 不能将参数 1 从“const char [8]”转换为“LPCWSTR”
    VS2010:#include<winsock2.h>#include<stdio.h>#defineMasterPort999//定义监听端口999#pragmacomment(lib,"ws2_32.lib")intmain(){WSADATAWSADa;structsockaddr_inSockAddrIn;SOCKETCSocket,SSocket;intiAddrSize;PROCES......
  • POJ 3352 Road Construction 边双联通分量
    题目:http://poj.org/problem?id=3352题意:加上最少的边,使得改造后的图中去掉任意一条边后图依然连通,题中任意两个点之间不会有重边思路:删掉任意一条边图依然连通,意味着任意两点间有至少两条通路。对于边双连通分量内的任意两点,至少会有两条通路,所以求边双连通分量,缩点,求出度为1的点......
  • let & const 与 var 的区别
    变量声明var 通过var声明的变量会直接声明到全局(window)作用域上 for(vari=0;i<3;i++){console.log(i);}console.log(i);console.log(window.i);//01233 问题:var声明的变量如果想实现局部作用域只能通过函数作用域来实现......
  • static与const的区别
    static是c++中非常常用的修饰符,他被用来控制变量的存储方式和可见性,下面我将从static修饰符的产生原因、作用谈起,全方面分析static修饰符的实质。static的两大作用:一、控制存储方式:static被引入以告知编译器,将变量存储在程式的静态存储区而非栈上空间。1、......
  • @PostConstruct的顺序
    其实从依赖注入的字面意思就可以知道,要将对象p注入到对象a,那么首先就必须得生成对象p与对象a,才能执行注入。所以,如果一个类A中有个成员变量p被@Autowired注解,那么@Autowired注入是发生在A的构造方法执行完之后的。如果想在生成对象时候完成某些初始化操作,而偏偏这些初始化操作又......
  • C++中struct和class的区别 || C++中const和static的作用
    struct和class不同点两者中如果不对成员不指定公私有,struct默认是公有的,class则默认是私有的class默认是private继承,而struct默认是public继承  static不考虑类的情况隐藏。所有不加static的全局变量和函数具有全局可见性,可以在其他文件中使用,加了之后只能在该......
  • A Comparison and Evaluation of Multi-View Stereo Reconstruction Algorithms
    介绍多视图立体重建是计算机视觉领域中一个非常重要的研究方向,它可以应用于三维建模、虚拟现实、机器人导航等多个领域。然而,目前多视图立体重建领域存在着很多问题和挑战,例如精度不高、完整性不足等。因此,作者希望通过本文对当前主流算法进行比较和评估,为该领域的进一步发展提供......
  • oracle constraint的属性
    constraint有三个属性:deferrabledeferredvalidated;其中deferrable和deferred联合使用,可以控制何时判断数据完整deferrabledefered就可以在commit时再判断;其中validated和enable联合使用,可以允许旧数据的不完整enablenotvalidated时,即可。 然后转一篇文章,讲解很详细:Oracle......