首页 > 编程语言 >C++基础知识-const篇

C++基础知识-const篇

时间:2024-11-20 14:18:38浏览次数:3  
标签:const 变量 int C++ 基础知识 修改 修饰 指针

1.const 作用

在C++中,const 关键字用于定义常量,确保某些数据不会被修改。const 的作用包括但不限于以下几点:

1. 定义常量值:
   const 可以用来定义不会改变的常量值   const int MAX_USERS = 100;
2. 修饰指针:
   const可以修饰指针,以限制指针指向的数据是否可以被修改。
   a) 指向常量的指针:指针指向的值不可变

          const int* ptr; // 指针指向的值不可变     

   b)常量指针:指针本身的值不可变,但指向的值可以变。

          int* const ptr = &someInt; // 指针本身的值不可变

   c)指向常量的常量指针:指针本身的值和指向的值都不可变。

         const int* const ptr = &someInt; // 指针和指向的值都不可变

3. 修饰函数参数:

   const 可以用于函数参数,表示参数在函数内部不会被修改。

   void print(const int& num) {
       // num 在函数内不会被修改
   }

4. 修饰函数返回值:
   const 可以用于函数返回值,表示返回的值不会被修改。

   const int getValue() {
       return someValue;
   }
5. 修饰成员函数:
   const 可以用于类的成员函数,表示该函数不会修改类的任何成员变量。
   class MyClass {
   public:
       void display() const {
           // 该函数不会修改任何成员变量
       }
   };

6. 修饰类成员变量:
  const 可以修饰类的成员变量,表示该成员变量是常量,不会被修改。
   class MyClass {
   public:
       const int value;
   };
7. 提高代码可读性:

   使用 const 可以提高代码的可读性,让其他开发者知道哪些变量和函数不应该被修改。

8. 编译时检查:

   const 可以提供编译时检查,如果代码尝试修改一个 `const` 修饰的变量或通过 `const` 修饰的函

数修改变量,编译器会报错。

除此之外

   const 修饰的变量可以帮助编译器进行优化,因为编译器知道这些变量的值不会改变,可以进行

更多的优化操作。 多线程编程中的线程安全:在多线程编程中,const 修饰的变量可以被多个线程

安全地访问,因为它们不会被修改。


 

标签:const,变量,int,C++,基础知识,修改,修饰,指针
From: https://blog.csdn.net/wahahshdjdjdn/article/details/143909389

相关文章

  • 【c++笔试强训】(第十六篇)
    目录游游的⽔果⼤礼包(枚举)题目解析讲解算法原理编写代码买卖股票的最好时机(⼆)(贪⼼)题目解析讲解算法原理编写代码游游的⽔果⼤礼包(枚举)题目解析1.题目链接:登录—专业IT笔试面试备考平台_牛客网2.题目描述题目描述游游有nnn个苹果,mmm个桃子。她可以把2个苹......
  • (2024最新毕设合集)基于SpringBoot的校园共享厨房信息系统-72647|可做计算机毕业设计JAV
    目 录摘要第一章 绪论1.1选题背景与意义1.2研究现状1.3论文结构与章节安排第二章系统分析2.1可行性分析2.1.1技术可行性分析2.1.2 经济可行性分析2.1.3操作可行性分析2.2系统功能分析2.2.1功能性分析2.2.2非功能性分析2.3 系统用例分......
  • C++(构造函数和创建类对象)
    一)构造函数的概念构造函数是一种特殊的成员函数,用于在创建对象时初始化对象的数据成员。它的主要目的是确保对象在使用前被正确地初始化,使得对象处于一个合理的初始状态。构造函数的名称与类名相同,没有返回类型(包括void)。例如,对于一个名为MyClass的类,其构造函数可以写成MyClass()......
  • C++ 之 VS2010 和MySQL数据库的链接问题
    目录代码#include<winsock.h>#include#include#include<mysql.h>usingnamespacestd;#pragmacomment(lib,"ws2_32.lib")#pragmacomment(lib,"libmysql.lib")//单步执行,不想单步执行就注释掉#defineSTEPBYSTEPintmain(){cout<<&q......
  • 针对初学者的C和C++23的对比学习-4.循环结构的学习
    4.循环结构的学习学习目标:学习内容:了解for语句:for循环的执行流程了解while语句:while循环的执行流程了解dowhile语句:dowhile循环的执行流程了解break和continue的使用for,while和dowhile的对比练习学习目标:了解循环结构了解for语句了解while语句了解d......
  • c语言中const参数莫名警告
     001、[root@PC1test1]#lstest.c[root@PC1test1]#cattest.c##测试c程序#include<stdio.h>voidprint_array(constintx[4][3]);//函数原型声明intmain(void){inta[4][3]={{1,2,4},{2,1,4},{2,5,1},{4,2,3}};......
  • C++语言之模版与类型转换
    模版C++的泛型编程可以将数据类型作为参数进行传递关键字:    C++模版的语法使用"<>"来表示泛型类型,并使用关键字template来定义和声明模版分类:    模版函数    模版类模版函数语法:    template<class假设的类型1,class假设......
  • 《C++ 构建区块链:创世区块的初始化之道》
    在区块链这个神秘而充满魅力的技术领域中,用C++构建区块链是一项极具挑战性和创新性的工作。而其中,初始化创世区块是整个区块链大厦的基石,它承载着区块链的起源和根本属性,就像生命起源中的第一个细胞一样重要。今天,我们就来深入探讨一下在C++构建区块链时,如何进行创世区......
  • 《C++ 实现区块链:区块时间戳的存储与验证机制解析》
    在区块链这个复杂而精妙的技术架构中,时间戳是一个至关重要的元素,尤其当我们使用C++来实现区块链时,对区块时间戳的存储和验证机制设计更是不容忽视。这一机制如同区块链的时间脉搏,为整个系统的有序运行和数据可信性提供了坚实的保障。时间戳在区块链中的核心意义时间戳在......
  • 【优选算法篇】算法江湖中的碎玉拾光——C++模拟题全解,踏步逐章细细品味
    文章目录C++模拟题详解:基础题解与细致分析前言第一章:基础练习1.1替换所有的问号(easy)解法(模拟)C++代码实现易错点提示时间复杂度和空间复杂度1.2提莫攻击(easy)解法(模拟+分情况讨论)C++代码实现易错点提示时间复杂度和空间复杂度1.3N字形变换(medium)解法(模拟+找......