首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏后端码匠

    C++const关键字

    C++const关键字 0x1 常量 C++定义常量有两种方式 #define 宏常量:#define 常量名 常量值 通常在文件上方定义,表示一个常量 宏常量不可以修改 // 宏常量 #define MAX 999 int main() { return 0; } const修饰的变量: const 数据类型 常量名 = 常量值 通常在变量定义前加关键字const,修饰该变量为常量,不可修改 0x5 const修饰成员函数 0x51 常函数 成员函数后加const后我们称为这个函数为常函数 常函数内不可以修改成员属性 成员属性声明时加关键字mutable后,在常函数中依然可以修改 // / Person * const this;指针的指向,以及指针指向的值都不可以修改 */ this->m_B = 100; // 正确,因为加上了mutable关键字 { // m_A = 100; // 错误,函数加上了const,属性不可以修改 this->m_B = 100; // 正确,因为加上了mutable关键字

    77430编辑于 2023-02-27
  • 来自专栏程序员互动联盟

    【面试宝典】C++const关键字的用法

    对于刚毕业的应届生来说面试中经常被问到const关键字的用法,小编在这里为大家总结如下: 修饰常量 用const修饰的变量某种意义上就是常量,编译器会对它进行必要的操作比宏定义多了类型修饰符。 修饰指针 (1)const int *p; p指针const int的指针,不能用赋值语句对*p赋值,但是可以对p赋值。 (2)int* const p=&j; p是指向int的const指针。 p是const数据,所以其本身不可改变,而*p可以被赋值。 (3)const int * const p=&i; p是一个const指针,其指向const数据i。p、*p都不能再被赋值。 放在参数前修饰参数表示该参数必须保持其常量性,不能在函数体内被修改; (2)类成员函数 放在类成员函数尾部,表示其在函数内并不修改对象的属性,只是读取等操作非更易型操作 修饰类对象 当类的对象被声明为const 类型后,它只能调用用const修改的成员函数。

    1K50发布于 2018-03-16
  • 来自专栏编程技术专栏

    const关键字总结

    const关键字const修饰的变量是不能改变的 const修饰变量时,必须在声明变量的同时给出初始化(类中的const成员变量不一样) 顶层const与底层const 顶层const 定义为变量本身是一个常量 ,因此对一切的内置类型常量而言,所有的const都是顶层const 对指针来说,常量指针是顶层const,对于引用则没有顶层const的概念。 底层const 只在指针和引用上有效,其定义是该指针指向或该引用绑定的对象是常量。 因此:顶层const和底层const,引用只有底层const。 c = &b; //错误,顶层const指针不能修改指针的指向 b = c; //底层const指针可以指向顶层const指针(顶层const可以赋值给底层const) c = b; //底层 const指针不可以赋值给顶层const指针 const int& e = a; //引用的底层const e = 1000; //错误,引用的底层const不能修改值 const int*

    75110发布于 2019-08-29
  • 来自专栏韩曙亮的移动开发专栏

    C++】C 语言 和 C++ 语言中 const 关键字分析 ② ( const 常量分配内存时机 | const 常量在编译阶段分配内存 )

    一、const 常量内存分配时机 在上一篇博客中 , 讲到了获取 const 常量的地址 , 代码如下 : // 定义常量 // 该常量定义在了 符号表 中 // 符号表 不在内存四区中 , 是另外一种机制 const int a = 10; // 定义一个指针 int* p = NULL; // 将 常量 a 的地址赋值给指针 // 在 堆内存中重新 常量 通常指的是在程序运行期间其值不会改变的变量 , 常量在定义后会被分配内存 , 这个过程一般发生在编译器的编译阶段 ; C++ 程序都是先进行编译 , 然后再执行 , 编译时分配内存意味着在程序运行之前 , 常量在程序内存中的位置就已经固定了 ; const 常量值在 内存分配完毕后 就不能再被修改 , 因此可以使用常量表示固定值 , 如 : 圆周率 \pi , 自然数 e ; const 常量 不是在运行期间分配内存的 ) 二、使用如下代码验证 const 常量内存分配时机 ---- 使用如下代码验证 : // 包含 C++ 头文件 //#include "iostream" // 使用

    74950编辑于 2023-10-15
  • 来自专栏【C】系列

    【C语言】const 关键字

    126﹣总榜960⇿全网访问量30w+ 本文由 謓泽 原创 CSDN首发如需转载还请通知⚠ 个人主页-謓泽的博客_CSDN博客  欢迎各位→点赞 + 收藏⭐️ + 留言​ 系列专栏-【C语言】关键字 ⒊注意 ⇨ 在数组当中的下标我们是不能使用 const 修饰的量的,可以说被修饰 const 其实本质还是个变量。 [const]修饰数组⇢在C语言中 const 还可以修饰数组,示例代码如下 const int Array[] = {1,2,3,4,5,6,7,8,9,10}; int const Array[] = {1,2,3,4,5,6,7,8,9,10}; 说明⇢在 const 关键字修饰数组与修饰变量类似的,表名了此数组只能具有只读性,不可以被修改。 说明⇢说明⇢第一种[const]修饰指针以及第二种[const]修饰指针的话,我会更加推荐第一种写法。

    76020编辑于 2022-12-12
  • 来自专栏c语言与cpp编程

    const关键字应用总结

    C++中的const关键字的用法非常灵活,而使用const将大大改善程序的健壮性,constC++中常用的类型修饰符,常类型是指使用类型修饰符const说明的类型,常类型的变量或对象的值是不能被更新的 1 概述 C++中的const关键字的用法非常灵活,而使用const将大大改善程序的健壮性,通过查阅资料,将const作用归纳如下: 可以定义const常量 const int Max = 10; 便于进行类型检查 char* const pContent;` 还有其中区别方法,沿着号划一条线 如果const位于的左侧,则const就是用来修饰指针所指向的变量,即指针指向为常量;如果const位于*的右侧,const 原因如下: 如果返回值为某个对象为constconst A test = A 实例)或某个对象的引用为constconst A& test = A实例),则返回值具有const属性,返回实例只能访问类 } 对于const类对象/指针/引用,只能调用类的const成员函数,因此,const修饰成员函数的最重要作用就是限制对于const对象的使用。

    74510发布于 2020-12-02
  • 来自专栏秘籍酷

    C语言(关键字const

    const是C语言中最坑爹的关键字,典型挂羊头卖狗肉,const本意是常量,但是C语言const只能用来定义只读变量。 拓展: const在C语言中的作用,基本都是用来修饰指针的,而且都是前置修饰: const int *p = &a; // 前置修饰 int *const p = &a; // 后置修饰 前置修饰时,我们可以通过指针

    1.3K20发布于 2019-08-08
  • 来自专栏Python爬虫实战

    AboutCPlusPlus之const关键字

    最近打算整理一下 C++ 的知识点,在 github 上搞一个项目,美其名曰“AboutCPlusPlus”,项目地址:https://github.com/CPythoner/AboutCPlusPlus 在 C++ 中用来修饰内置类型变量、自定义对象、成员函数、返回值、函数参数。 1. const int a = 5; int const b = 5; const int arr1[3] = {1,2,3}; int const arr2[3] = {1,2,3}; 来看一些对 const 引用 const int &c = a; // 正确 int *d = &a; // 错误:不能为 const 变量绑定指向 non-const 的指针 const int *e = &a; // 如果有个成员函数想修改对象中的某一个成员变量,可以使用 mutable 关键字修饰这个成员变量: #include<iostream> using namespace std; class Test {

    75530发布于 2021-04-29
  • 来自专栏yanlongli_艳龙

    const 关键字的学习

    一、const 修饰普通类型的变量 const int a = 7; int b = a; // 正确 a = 8; // 错误,不能改变 a 被定义为一个常量,并且可以将 a 赋值给 二、const 修饰指针变量 1. const 修饰指针指向的内容,则内容为不可变量 const int *p = 8; 指针指向的内容 8 不可改变。 简称左定值,因为 const 位于 * 号的左边 2. const 修饰指针,则指针为不可变量 int a = 8; int* const p = &a; *p = 9; // 正确 int b = 因为 const 位于 * 号的右边 3. const 修饰指针和指针指向的内容,则指针和指针指向的内容都为不可变量 int a = 8; const int * const p = &a; 这时,const 值传递的 const 修饰传递,一般这种情况不需要 const 修饰,因为函数会自动产生临时变量复制实参值 #include<iostream> using namespace std; void

    34130编辑于 2021-12-16
  • 来自专栏编程珠玑

    C++与C中的const关键字有何差别?

    前言 在《const关键字到底该怎么用》一文中介绍了C语言中的const关键字,本文说说C++中的const关键字,它的大部分特点和C语言中的类似,所以本文主要针对不同之处。 与C语言中const关键字不同的是,C++中使用const关键字定义的b变量的值在被改变时会被检测。 因为前者传递指针的副本,指针指向不会被改变,但可以改变指向的内容;但是int类型参数,它也是传递副本,但是永远不会被函数改变,自然也没有必要加const关键字。更多解释可以参考《传值和传指针》。 总结 关于const关键字在C和C++中的区别,想必到这里你已经清楚了。const关键字通常能借助编译器帮助我们提前发现一些不易察觉的问题。 如果你对下面的问题还不清楚,建议阅读《const关键字到底该怎么用》 你能分清下面的声明区别吗? const int *p; int * const p; int const * const p;

    97900发布于 2019-11-13
  • 来自专栏程序编程之旅

    C++const对象和const成员

    const对象 定义类对象时可以将其指定为const对象。定义后const对象不能再被修改。 const对象不能调用非const类型的成员函数。 如果一个对象被定义成const对象,那么它就不能调用这个类中的非const成员函数。 const对象调用的成员函数一定都得是const关键字来声明const数据成员。 2.初始化列表 初始化列表: 除了在构造函数中对数据成员进行初始化,C++还提供另外一种方法来对数据成员进行初始化 初始化列表并不是在构造函数内进行初始化 构造函数初始化列表以一个冒号开始, 3.const成员函数 const成员函数只能被const对象引用。const成员函数内可以引用const数据成员,也可以引用非const数据成员,但不能修改非const数据成员的值。

    1.5K10发布于 2021-01-21
  • 来自专栏毛利学Python

    【小白学习C++ 教程】八、在C++指针传递引用和Const关键字

    因此输出为 3 9 使用 Const 传递 const关键字告诉编译器,这样的变量不会改变的。 比如:double const pi = 3.14;。如果我们尝试更改pi,编译器将抛出错误。 有时,我们const在函数中使用参数;这是当我们知道我们想要编写一个函数,其中参数不会在函数内部更改的事实时。 下面是一个例子: int triple(int const i) { return i * 3; } 在这个例子中,我们没有修改i. 因此,为了节省不修改参数值的函数的计算成本,我们实际上可以更进一步并使用const引用: int triple(int const &i) { return i * 3; } const 确保参数不会改变 #include <iostream> using namespace std; int triple(int const &i) { return i * 3; } int main(){

    65240编辑于 2022-08-18
  • 来自专栏程序人生丶

    C++const 和 constexpr关键字解析:常量、函数和指针

    很多C++的初学者看到const这个关键字的第一反应都是一头雾水,主要是因为const可以出现在很多的位置,以及后面加入的constexpr更是常常感到困惑,今天就为大家一一解释出现它们的含义和以及作用 const关键字 const修饰变量 这是最基本的一种用法,顾名思义,就是将该变量修饰为常量,从而不可以修改。 很多的全局变量都是通过常量来进行修饰,需要注意的是,使用const关键字修饰的变量需要立刻初始化 // 修饰局部变量,全局变量,成员变量 const int a = 2; // 错误,表达式必须是可修改的左值 引用 这是const最常用的一种方式,通常用于函数的参数列表中,因为我们知道在C++中函数参数有3中传递方式,分别是值传递,指针传递(或者叫地址传递),引用传递,前两种在传递时都会发成拷贝行为 指针本身也是一个变量 所以为了避免意外修改导致实参的值发生改,通常会采用const加上引用的方式传递参数 void test(const Student &s) { ... } constexpr关键字 constexpr

    1.4K20编辑于 2023-12-03
  • 来自专栏程序手艺人

    C++const

    \n"); return 0; } 编译结果 gcc test.c –> c = 5 g++ test.cpp –> c = 0 C++中的const C++在C的基础上对constconst 常量使用& 操作符 注意: C++编译器虽然可能为const常量分配空间,但不会使用其存储空间的值 ? 当const 常量为全局,并且需要在其它文件中使用 当使用&操作符对const常量取地址 C++中的const 常量类似于宏定义 const int c = 5; ≈ #define c 5 C ++ 中的const 常量在与宏定义不同 const 常量是由编译器处理 编译器对const常量进行类型检查和作用域检查 宏定义由预处理器处理,单纯的文本替换 小结 与C语言不同,C++中的const 不是只读变量 C++中的const是一个真正意义上的常量 C++编译器可能会为const常量分配空间 C++完全兼容C语言中const常量的语法特性

    1.1K60发布于 2018-05-18
  • 来自专栏C语言

    【C语言】const 关键字详解

    C语言const关键字详解 const关键字在C语言中用于定义常量,提供只读的变量。这意味着一旦初始化,const变量的值不能再被修改。 下面详细介绍const关键字的用法、作用以及其在不同上下文中的应用。 1. 基本概念 1.1 const关键字的基本用法 const关键字可以用于修饰基本数据类型、指针、函数参数等。 它通过在变量声明前加上const关键字来使用。 const可以修饰基本数据类型、指针、数组、结构体、联合体等,并且可以与volatile关键字组合使用。在实际编程中,合理使用const关键字,可以帮助我们编写出更加健壮和可靠的代码。 输出结果 Returned value = 42 5. constC++中的扩展 在C++中,const关键字的应用更加广泛,可以用于修饰成员函数、引用、迭代器等。

    88710编辑于 2024-12-07
  • 来自专栏全栈程序员必看

    C++ 顶层 const

    我的主力博客:半亩方塘 本文的主要參考来源来自于:C++ Primer 中文版(第 5 版) 第 57 面至第 58 面 1. , 底层 const 则与指针和引用等复合类型的基本类型部分有关 ,比較特殊的是,指针既能够是顶层 const 也能够是底层 const ,这一点与其它类型差别明显。 顶层 const 与底层 const 在运行拷贝操作时的不同 对于顶层 const 与底层 const ,在运行对象拷贝时有着明显的不同: (1)顶层 const 不受什么影响 int i = 0; const int ci = 42; // 不能改变 ci 的值,这是一个顶层 consti = ci; // 正确:ci 是一个顶层 const,对此操作无影响const int *p2 = 正确:const int& 能够绑定到一个普通 int 上 来分析一下以上的代码: int *p = p3; p3 既是一个顶层 const 又是一个底层 const,在运行对象拷贝时,顶层 const

    48210编辑于 2021-12-03
  • 来自专栏zxctscl个人专栏

    C++const成员

    前言 在之前已经已经分享过了关于 【C++】类和对象之常引用与运算符重载,这次分享的有关const的内容,话不多说,正文开始。 2. const成员 将const修饰的“成员函数”称之为const成员函数,const修饰类成员函数,实际修饰该成员函数隐含的this指针,表明在该成员函数中不能对类的任何成员进行修改。 总之: 成员函数,如果是一个对成员变量只进行读访问的函数,建议加const,这样const对象和非const对象都能使用。 来看看下面的几个问题: const对象可以调用非const成员函数吗? 不行,权限放大了 非const对象可以调用const成员函数吗? 可以,这里权限缩小 const成员函数内可以调用其它的非const成员函数吗? 不行,权限放大了 非const成员函数内可以调用其它的const成员函数吗?

    34610编辑于 2024-03-03
  • 来自专栏科学计算

    C++ const详解

      常量在C++中经常用到,用关键字const表示,它是常数变量,也就是说,它仍然是变量,而不是常数。什么区别呢? 如果是在不同的文件中使用,需要用到关键字extern extern const int a ; 这样表示变量a是一个定义别处的全局变量,在这里只能使用,并不能修改,但a并不一定真的是一个const。 指针常量和常量指针   这应该是C++面试和笔试中经常考到的一个知识点。 可以看const和*的先后顺序: const int *p; //常量指针 int *const p; // 指针常量 而且只要我们记住,const后面的是常量,这样就很容易区分它们的功能,对于常量指针 ; // OK } 所以,对于const变量,我们可以要记住一个核心的一点是,const后面的变量是不能当左值的。

    80310发布于 2020-06-29
  • 来自专栏游戏开发司机

    C语言: const关键字与指针

    const修饰指针的4种形式 const关键字,在C语言中用来修饰变量,表示这个变量是常量。 const修饰指针有4种形式,区分清楚这4种即可全部理解const和指针。 第一种:const int *p; 第二种:int const *p; 第三种:int * const p; 第四种:const int * const p; // 第一种 const int int * const p3; // p本身是cosnt的,p指向的变量不是const的 // 第四种 const int * const p4;// p本身是cosnt的,p指向的变量也是const 一个const关键字只能修饰一个变量,所以弄清楚这4个表达式的关键就是搞清楚const放在某个位置是修饰谁的 const修饰的变量真的不能改吗? const究竟应该怎么用 const是在编译器中实现的,编译时检查,并非不能骗过。

    85910发布于 2021-02-03
  • 来自专栏嵌入式实验基地

    面试爱问之const关键字

    const基本介绍 const是constant的简写,用来定义常量,如果一个变量被const修饰,那么它的值就不能再被改变。 #include<stdlib.h> #include<string.h> const int a = 10; //const修饰的全局变量放在常量区 //1.const修饰的全局变量,即使语法通过 如果const在星号的左边,则为常量指针 如果const在星号的右边则为指针常量 如果我们将星号读作‘指针’,将const读作‘常量’的话,内容正好符合。 代码示例: //第一种,常量指针 const int *p1; //p本身不是const的,而p指向的变量是const int const *p2; //p本身不是const的,而p //第三种 const int* const p4; //p本身是const的,而p指向的变量也是const 是以上两种的结合,指针指向的位置不能改变并且也不能通过这个指针改变变量的值,

    66020编辑于 2023-09-06
领券