首页 > 编程语言 >C++之进化后的 const 分析

C++之进化后的 const 分析

时间:2023-09-08 19:31:45浏览次数:47  
标签:const 进化 只读 C++ 编译 预处理 变量

@TOC


前言

从C演变而来的C++是一种功能更为丰富和面向对象的编程语言。在C++中,const关键字用于表示常量,其用法与C中的const有了一些进化和扩展。本文将探讨C到C++的const的进化,以及在C++中使用const的一些特性和用法。


C语言中的const

  1. const修饰的变量是只读的,本质上还是变量。
  2. const修饰的局部变量在栈上分配内存
  3. const修饰的全局变量在只读存储区分配 空间
  4. const只在编译期有用,在运行期无用

编译链接执行过程详解: 1、预处理期(Preprocessing):在此阶段,预处理器对源代码进行文本替换和宏展开等操作,处理以"#"开头的预处理指令,生成经过预处理后的源代码。

2、编译期(Compile Time):在编译期,编译器对预处理后的源代码进行词法分析、语法分析和语义分析,生成目标代码。编译器会检查语法错误和类型错误,并生成可执行文件或库文件。

3、链接期(Link Time):如果程序中包含多个源文件或使用了外部库,编译器会为每个源文件生成目标代码,然后在链接期将这些目标代码合并成一个可执行文件。链接器会解析各个目标代码之间的引用关系,并将它们正确地连接在一起。

4、运行期(Runtime):在运行期,已编译的程序被加载到计算机内存中,并开始执行。程序与操作系统和硬件交互,执行各种操作,包括变量的赋值、函数调用、条件判断等。

5、调试期(Debugging):调试期是指在程序的运行过程中,通过调试工具(如调试器)来检查和定位程序中的错误和问题。调试工具可以逐行执行代码、观察变量的值和执行状态,并进行错误排查和修复。

C语言的const只有在上述步骤2有用。

C语言中的const使得变量只具有只读属性 const将具有全局生命周期的变量存储到只读存储区 const不能属于真正的变量

标签:const,进化,只读,C++,编译,预处理,变量
From: https://blog.51cto.com/u_16176403/7412531

相关文章

  • 所以说,java的“方法”有点儿类似于C++的"函数"吧
    两个语言的区别就是,C++如果函数写在下面的话,要在上面注释:而java的方法若写在下面的话,要加static,然后不管怎样,前面一定要加public......
  • C++开发认证
    练习B如果在try块中用throw"error";语句抛出一个异常,则参数类型是()的catch块能够捕获这个异常:(3.0分)Aint*Bconstchar*CcharDconstint2.D关于类模板的模板参数说法正确的是:(3.0分)A只可作为数据成员的类型B只可作为成员函数的返回值类型C只可......
  • mupdf实用操作demo,C++操作PDF文件
    前文:最近有个项目,需要读写PDF,本来想着挺简单的,读写PDF有那么多的库可以使用,唰唰的就完成了。忘记了我写C++的,还是在国产系统上开发的。所以一般的东西还不好使,因为项目需要在多个架构的电脑上使用,所以必须要开源,还要支持读写才行。 找了很多个PDF库(libharu、mupdf、pdfium、......
  • C++系列十:MFC
    目录前言:Helloworld:前言:仅是简单了解,运行,看看是啥。环境:Helloworld:......
  • linux c++ tcp
    1.TCP/IP协议栈链路层:负责下图所示物理链接标准IP层(网络层):选择合适的路径传输数据,无法解决数据传输错误问题,所以需要TCP/UDP协议作为保障TCP/UDP(传输层):IP层(网络层)解决传输路径问题,确定了路径,就进行传输数据,IP层只关注一个数据包如何进行传输,至于传输过程数据包是否损坏,传输......
  • C++ 归并排序
    #include<iostream>#include<vector>usingnamespacestd;///合并voidmerge(vector<int>&nums,intl1,intr1,intl2,intr2,vector<int>&tmp){ intleft=l1,right=r2;intk=l1;while(l1<=r1&&......
  • Androidstudio现有文件中添加C、C++文件 (NDK)
    创建新的C/C++源代码文件1.如果应用的主源代码集内还没有cpp/目录,请按如下所示的方法创建一个:1.1打开AndroidStudio左侧的Project窗格,然后从菜单中选择Project视图。1.2依次选择your-module>src。1.3右键点击main目录,然后依次选择New>Dire......
  • 线程安全的队列:使用Monitor模式和C++11多线程库
    线程安全的队列:使用Monitor模式和C++11多线程库引言在多线程编程中,数据共享是一个关键的问题。如果多个线程需要访问同一个数据结构,不正确的管理会导致数据不一致甚至程序崩溃。本文将介绍如何使用C++11的多线程库和Monitor模式来实现一个线程安全的队列。Monitor模式Monitor模式......
  • effective c++笔记
    一.截图1. public继承,No32,Pg155 2.不重定义继承而来的缺省参数值,No37,Pg183 ......
  • C++中的多态和虚函数
    #include<iostream>usingnamespacestd;//基类PeopleclassPeople{public:People(char*name,intage);voiddisplay();protected:char*m_name;intm_age;};People::People(char*name,int......