首页 > 编程语言 >C++ const 对象

C++ const 对象

时间:2024-09-13 13:24:38浏览次数:6  
标签:文件 const 定义 对象 C++ file extern bufsize

默认状态下,const 对象仅在文件内有效。

const int bufSize=512;//输入缓冲区大小

编译器将在编译过程中把用到该变量的地方都替换成对应的值。也就是说,编译器会找到代码中所有用到 bufsize 的地方,然后用 512 替换

某些时候有这样一种 const 变量,它的初始值不是一个常量表达式,但又确实有必要在文件间共享。这种情况下,我们不希望编译器为每个文件分别生成独立的变量。相反,我们想让这类 const 对象像其他(非常量)对象一样工作,也就是说,只在一个文件中
定义const,而在其他多个文件中声明并使用它。

解决的办法是,对于 const 变量不管是声明还是定义都添加 extern 关键字,这样只需定义一次就可以了:

// file 1.cc 定义并初始化了一个常量,该常量能被其他文件访问
extern const int bufSize =fcn();
// file 1.h 头文件
extern const int bufsize;//与file 1.cc 中定义的 bufsize 是同一个

如上述程序所示,file 1.cc 定义并初始化了 bufsize。因为这条语句包含了初始值,所以它(显然)是一次定义。然而,因为bufsize是一个常量,必须用extern 加以限定使其被其他文件使用。

file 1.h头文件中的声明也由 extern 做了限定,其作用是指明 bufsize 并非本文件所独有,它的定义将在别处出现。

如果想在多个文件之间共享 const 对象,必须在变量的定义之前添加 extern 关键字。




《C++ Primer》 P54

标签:文件,const,定义,对象,C++,file,extern,bufsize
From: https://www.cnblogs.com/huvjie/p/18412029

相关文章

  • 【C++进阶】多态
    【C++进阶】多态......
  • 【C++】深究C++三大特性之多态
    1.多态的概念通俗的来说,就是多种形态,具体点就是去完成某个行为,当不同的对象去完成时会产生不同的形态。例如:比如买票这个行为,当普通人买票时,是全价买票;学生买票时,是半价买票;军人买票时时是优先买票。2.多态的定义及实现2.1多态的构成条件多态是在不同继承关系的类对......
  • Android生成C++ AIDL
    生成C++[Android]接口cpp和ndk的区别cpp:生成的代码是为了在Android源码中编译,代码中会调用Android源码中的native接口。例如,引用的头文件:,,,ndk:生成的代码是为了使用ndk独立编译,调用的是ndk的接口,例如,引用的头文件:–lang=cpp,参数指定生成Android源码下编译的C++接口文件......
  • 复合Simpson求积算法-C++【可直接复制粘贴/欢迎评论点赞】
    背景复合Simpson求积算法是基于Simpson1/3法则的推广。Simpson1/3法则是一种数值积分方法,它通过将积分区间划分为多个小区间,并在每个小区间上采用一个二次多项式来逼近原函数,进而求得积分的近似值。复合Simpson求积算法则是将这种方法应用于整个积分区间,即将整个区间划分为......
  • Gauss列主元素消去法-C++【可直接复制粘贴/欢迎评论点赞】
    Gauss列主元素消去法(也称为列主元Gauss消去法)是Gauss消去法的一种改进版本,主要用于求解线性方程组。在C++中实现时,它具有一些显著的优点和缺点,并且有着深厚的数学和计算背景。优点提高数值稳定性:列主元Gauss消去法通过在每一列中选择绝对值最大的元素作为主元,从而避免了在消......
  • 牛顿插值法-C++【可直接复制粘贴/欢迎评论点赞】
    牛顿插值法是一种基于给定数据点集构造插值多项式的方法,用于近似未知函数的值。该方法通过构造差商表并利用该表逐步构建插值多项式。相较于拉格朗日插值法,牛顿插值法的一个显著优势是,当需要增加插值点时,只需重附上一项即可,无需重新计算所有插值点的值。基本概念牛顿插值法的......
  • 【C++基础概念理解——std::invoke()函数基础知识】
    std::invoke定义std::invoke是C++17引入的一个标准库函数,用于通用地调用可调用对象(如函数指针、成员函数指针、函数对象、lambda表达式等)。它提供了一种统一的方式来调用这些可调用对象,而不需要关心它们的具体类型。功能std::invoke可以调用以下类型的可调用对象:......
  • C++17新特性探索:拥抱std::optional,让代码更优雅、更安全
    std::optional背景在编程时,我们经常会遇到可能会返回/传递/使用一个确定类型对象的场景。也就是说,这个对象可能有一个确定类型的值也可能没有任何值。因此,我们需要一种方法来模拟类似指针的语义:指针可以通过nullptr来表示没有值。解决方法是定义该对象的同时再定义一个附加的......
  • 分享一些程序员常用的C++知识点
    以下是一些C++中的常用知识点:一、基础语法数据类型基本数据类型:整型(int):用于表示整数,通常占用4个字节(32位系统)。例如:intnum=10;浮点型(float、double):用于表示小数,float精度较低,double精度较高。如floatf=3.14f;(注意f后缀表示float类型),doubled=3.1415926......
  • C++入门基础
    个人主页:Jason_from_China-CSDN博客所属栏目:C++系统性学习_Jason_from_China的博客-CSDN博客前言 这一篇章算是C++栏目的语法的第一篇章,主要是为类和对象打下基础,介绍一些C++基本的语法结构这里提醒一下,要是看不懂第一步创建文件的,其实更建议先学习一下C语言,因为C++的......