`

C++里面的const是怎么实现的?

    博客分类:
  • c++
 
阅读更多

Const 推出的初始目的,正是为了取代预编译指令,消除它的缺点,同时继承它的优点。

现在它的形式变成了:

Const DataType VariableName = VariableValue ;为什么const能很好地取代预定义语句?const 到底有什么大神通,使它可以振臂一挥取代预定义语句呢?

1. 首先,以const 修饰的常量值,具有不可变性,这是它能取代预定义语句的基础。

2. 第二,很明显,它也同样可以避免意义模糊的数字出现,同样可以很方便地进行参数的调整和修改。

3. 第三,C++的编译器通常不为普通const常量分配存储空间,而是将它们保存在符号表中,这使得它成为一个编译期间的常量,没有了存储与读内存的操作,使得它的效率也很高,同时,这也是它取代预定义语句的重要基础。

这里,我要提一下,为什么说这一点是也是它能取代预定义语句的基础,这是因为,编译器不会去读存储的内容,如果编译器为const分配了存储空间,它就不能够成为一个编译期间的常量了。

4. 最后,const定义也像一个普通的变量定义一样,它会由编译器对它进行类型的检测,消除了预定义语句的隐患。

分享到:
评论

相关推荐

    C++ const使用详解

    需要注意的是,const 是函数类型的一个组成部分,因此在实现部分也要带 const 关键字。同时,const 成员函数不能更新对象的数据成员,也不能调用该类中没有用 const 修饰的成员函数。 五、使用 const 的一些建议 1...

    C++用于矩阵处理的头文件

    下面将详细解释如何在C++中实现矩阵类以及如何重载基本运算符。 首先,我们需要创建一个矩阵类(Matrix),它通常包含两个主要部分:矩阵的数据存储和矩阵的操作方法。在C++中,我们可以选择用二维数组或动态分配的...

    c++遍历一个ISO文件里面的所以文件名

    针对标题“C++遍历一个ISO文件里面的所以文件名”,我们可以深入探讨如何在C++中访问和读取ISO镜像文件中的内容。 首先,ISO文件是一种光盘映像格式,它通常用于存储光盘上的数据,如操作系统安装盘或DVD电影。在...

    阿里云发送短信C++源码、实测通过

    `SmsSend`可能是源码文件的名称,里面包含了实现上述功能的代码。在VS2019中,你可以创建一个C++项目,将这个源文件添加到项目中,然后编译和运行来测试短信发送功能。 总的来说,通过这个C++源码,你可以学习到...

    c++按行读写txt文件

    在给定的标题“c++按行读写txt文件”和描述中,我们可以看到一个在Visual Studio 2008环境下编写的C++程序,该程序实现了对TXT文件的逐行读取、按指定分隔符分解行内容、字符串到数值类型的转换以及将内存内容写回...

    linux c++按照时间排序删除文件夹里面的文件

    在Linux环境中,C++编程语言可以用来实现自动化处理任务,比如按照时间戳排序并删除文件夹中的文件。这个任务涉及到文件操作、时间戳比较以及控制删除文件的数量。下面将详细介绍如何实现这一功能。 首先,我们需要...

    QT C++ 基于word模板 在标签位置写入文字和图片 demo

    QT C++ 基于Word模板在标签位置写入文字和图片的开发示例是一个实用的技术,它允许开发者创建自定义的Word文档并填充预先定义的内容。本demo使用了QT6.2.4版本,该版本是Qt库的一个稳定版本,支持C++编程,并且与...

    Lua的使用入门之在C++程序中调用lua函数1

    本教程将详细介绍如何在C++程序中调用Lua函数,实现文本的获取与显示策略。 首先,你需要安装Lua库,并将其头文件和库文件添加到你的C++项目中。对于Visual Studio 2008(vc2008)用户,可以通过NuGet或手动下载Lua...

    C++读取csv到数组.zip

    在C++编程中,将CSV(逗号分隔值)文件读取到数组是一项常见的任务,特别是在处理数据或实现数据分析程序时。CSV文件通常用于存储表格数据,每一行代表一个记录,每一列代表一个属性,列之间用逗号分隔。在本教程中...

    一维动态数组实现的矩阵类

    CMatrix的接口函数都在"Matrix.h"里面 CVector的接口函数在"Vector.h"里,"Matrix.h"里包含了"Vector.h" 具体用法与测试用例Main.cpp里有3个测试用例,分别是针对构造函数属性计算与运算符重载的 内已包含测试工程...

    C++面试笔试宝典 经典之作

    2. **C++高级特性**:这部分包括异常处理、命名空间、引用、指针、动态内存分配、const关键字的使用、友元函数和友元类等。这些特性在解决复杂问题时经常用到,也是面试中的常见考点。 3. **内存管理**:深入理解...

    (VS2010 C++)删除指定目录及其下所有的文件夹,文件

    本示例基于Visual Studio 2010 (VS2010)环境,使用C++语言实现这一功能。我们将探讨如何通过Windows API函数来完成这一任务。 首先,我们需要引入Windows API头文件`windows.h`,它包含了处理文件和目录的函数。接...

    摩托罗拉C++面试题

    如何实现?(也许会让你当场举例实现) 模板可以说比较古老了,但是当前的泛型编程实质上就是模板编程。 它体现了一种通用和泛化的思想。 STL有7种主要容器:vector,list,deque,map,multimap,set,multiset. 17.你...

    教你C#里使用指针指针在C\C++里面可是一个好东西

    在C/C++语言中,指针是一个非常强大的工具,可以实现对内存的直接访问与操作。然而,在Java和.NET等现代编程环境中,为了增强安全性和简化编程模型,指针被隐藏在底层,对开发者不可见。尽管如此,.NET框架仍然允许...

    C++读取Excel,就两个文件,里面有例子,可以直接使用

    本示例中提到的是一个简单的方法,仅使用两个文件来实现C++读取Excel的功能,这对于小型项目或学习Excel处理非常实用。这里我们将详细探讨如何使用MFC(Microsoft Foundation Classes)库以及可能涉及的其他第三方库...

    【Thrift之C++远程调用helloworld菜鸟教程】

    在这个"Thrift之C++远程调用helloworld菜鸟教程"中,我们将深入理解Thrift如何与C++结合,实现简单的RPC通信。 首先,我们需要了解Thrift的基本概念。Thrift提供了一种IDL(Interface Description Language),类似...

    在c++中实现属性

    在C++中实现属性 本文译自http://www.codeguru.com/cpp_mfc/Property.html的Implementing a Property in C++ 以下是译文 本文由Emad Barsoum投稿。 开发测试环境:Visual C++ 7.0, Windows XP sp1, Windows 2000...

    在CMake Qt Qml环境中,用c++加载和访问Qml里面的控件

    在CMake、Qt和Qml的环境中,将C++与Qml进行集成是常见的开发实践,这使得可以利用Qml的声明式UI设计和C++的高性能后端处理能力。...结合这两种方法,开发者可以根据需求灵活选择合适的方式实现C++与Qml的深度整合。

    读取txt文件的c++程序将特定数据从txt文件中摘出来

    下面我们将详细讲解如何在C++中实现这个功能,并探讨相关知识点。 首先,我们需要包含相关的头文件来使用文件I/O功能。`fstream`头文件包含了用于读写文件的类,如`ifstream`(输入文件流)和`ofstream`(输出文件...

    c++笔记,自己对比赛的知识点总结

    C++中的修饰符类型包括const、volatile、restrict等。这些修饰符可以影响变量的行为。 九、存储类 C++中的存储类包括auto、register、static、extern和 thread_local等。这些存储类可以影响变量的存储方式和生命...

Global site tag (gtag.js) - Google Analytics