首页 > 编程语言 >C++ 顶层const底层const

C++ 顶层const底层const

时间:2024-09-14 18:14:00浏览次数:7  
标签:p2 p3 顶层 const int ci C++

int i =0;
int *const pl = &i;    //不能改变p1的值,这是一个顶层 const
const int ci=42;       //不能改变 ci的值,这是一个顶层 const
const int *p2 =&ci;    //允许改变p2的值,这是一个底层 const
const int *const p3=p2;//靠右的const是顶层const,靠左的是底层 const
const int &r=ci;       //用于声明引用的 const 都是底层 const
i = ci;  //正确:拷贝ci的值,ci是一个顶层const,对此操作无影响
p2 = p3; //正确:p2和p3指向的对象类型相同,p3顶层const的部分不影响
int *p=p3;        //错误:p3 包含底层 const的定义,而p没有
p2 = p3;          //正确:p2和p3 都是底层 const
p2 = &i;          //正确:int*能转换成 const int*
int &r=ci;        //错误:普通的int&不能绑定到int常量上
const int &r2 =i; //正确:const int&可以绑定到一个普通int上




《C++ Primer》 P58

标签:p2,p3,顶层,const,int,ci,C++
From: https://www.cnblogs.com/huvjie/p/18414499

相关文章

  • c++临时对象导致的生命周期问题
    对象的生命周期是c++中非常重要的概念,它直接决定了你的程序是否正确以及是否存在安全问题。今天要说的临时变量导致的生命周期问题是非常常见的,很多时候没有一定经验甚至没法识别出来。光是我自己写、review、回答别人的问题就犯了或者看到了许许多多这类问题,所以我想有必要......
  • c++类和对象(3):默认成员函数(下)
    1.拷贝构造函数如果⼀个构造函数的第⼀个参数是自身类类型的引用,且任何额外的参数都有默认值,则此构造函数也叫做拷贝构造函数,也就是说拷贝构造是⼀个特殊的构造函数。c++规定:类类型的传值传参必须用拷贝构造1.1拷贝构造函数的特点1.拷贝构造函数是构造函数的⼀个重载......
  • 南沙C++noip老师解一本通题: 1360:奇怪的电梯(lift)
    ​【题目描述】大楼的每一层楼都可以停电梯,而且第i层楼(1≤i≤N)上有一个数字Ki(0≤=Ki≤=N)。电梯只有四个按钮:开,关,上,下。上下的层数等于当前楼层上的那个数字。当然,如果不能满足要求,相应的按钮就会失灵。例如:33125代表了Ki(K1=3,K2=3,……),从一楼开始。在一楼,按“上”可以到4......
  • 【关于c++模版类的报错问题】
    关于c++模版类的报错问题模版类的定义使用类模板模版类的定义通常在实现一个类时,会在.h头文件中声明函数,在.cpp文件中实现该函数。然而如果是模版类的话情况则会稍有不同。这是一个名为debug.h的头文件,里面包含了一个名为A的模版类类A的实现在debug.hpp中,模板类的......
  • constexpr声明 常量表达式
     constexpr是C++中用于声明常量表达式的关键字,表示一个变量或函数的值在编译时就可以确定,而不是在运行时计算。这对优化非常有用,因为编译器可以直接将结果嵌入到程序中,减少运行时的开销。通俗解释:变量篇:如果你有一个constexpr变量,它的值在编译时就已经固定好......
  • C++STL~~stack&queue
    文章目录stack&queue的概念stack&queue的使用stack&queue的练习总结stack&queue的概念stack(栈)概念和特点栈是一种后进先出(LastInFirstOut,LIFO)的数据结构。就像一叠盘子,最后放上去的盘子最先被拿走。queue(队列)概念和特点队列是一种先进先出(FirstInFirstO......
  • C++——类与对象(三)
    目录引言类型转换1.类型转换2.explicit关键字static成员1.static静态成员变量2.static静态成员函数3.访问静态成员变量的方法3.1 静态成员变量为公有3.2静态成员变量为私有友元1.友元函数2.友元类内部类匿名对象对象拷贝时的编译器优化1.类型转换2.传值......
  • 《 C++ 修炼全景指南:九 》打破编程瓶颈!掌握二叉搜索树的高效实现与技巧
    摘要本文详细探讨了二叉搜索树(BinarySearchTree,BST)的核心概念和技术细节,包括插入、查找、删除、遍历等基本操作,并结合实际代码演示了如何实现这些功能。文章深入分析了二叉搜索树的性能优势及其时间复杂度,同时介绍了前驱、后继的查找方法等高级功能。通过自定义实现的......
  • C++实现线程池
    目录一.什么是线程池二.为什么要用线程池三.如何实现线程池这篇文章简单讨论下线程池。一.什么是线程池线程池简单来时就是维护了一组线程的池子,这组线程执行一些相似任务。是一种线程的使用方式。二.为什么要用线程池有的时候系统需要处理大量相似任务,频繁创建销......
  • c++代理类
    c++中代理类的学习https://blog.csdn.net/lcg910978041/article/details/51468680C++代理类是为了解决这样的问题: 容器通常只能包含一种类型的对象,所以很难在容器中存储对象本身。怎样设计一个c++容器,使它有能力包含类型不同而彼此相关的对象? 代理运行起来和他所代表的......