我主要是记录一个发现,目前我不能解释,先作个记录。

const 只是一个 语义约束,由编译器强制实施的。使被约束的对象不能被直接访问修改。

我用 『直接』这词,因为在代码段中 ,用一个const 指针指向该对象,然后再用const_cast<T*>去掉 const限定,就能通过得到的non-const指针修改了。

但是!!我测试发现。

若是一全局的const对象,则该法不能奏效,(static局部对象我也测试了)编译依然没Error,但程序运行直接崩溃。

也就是说,对于,存储在  栈 中的对象,他没有区分有无const之分,const仅仅只是一个编译器层面的约束。(这也符合之前的理解)

但对于 Data Segment(存储 全局,static局部对象) ,我之前以为也向栈中一样没有区分,

但测试结果表明,他区分了有无const,并且在程序加载时,将 const标记的送到一个特别的内存区域,亦或 通知 OS这块内存不能修改?

以上是我目前的猜测,先作记录。


同样的, 字符串 常量,也是存储在 数据段中的,所以,通过指针修改也会导致 程序崩溃。

c++ const全局对象是如何处理的的更多相关文章

  1. let和const命令//////////////////////z

    let和const命令 let命令 块级作用域 const命令 全局对象的属性 let命令 基本用法 ES6新增了let命令,用来声明变量.它的用法类似于var,但是所声明的变量,只在let命令所在的 ...

  2. ECMAScript 6入门 - let和const命令

    详细学习链接: http://es6.ruanyifeng.com/#docs/let let命令 基本用法 ES6新增了let命令,用来声明变量.它的用法类似于var,但是所声明的变量,只在let命 ...

  3. ES 6 : let与const

    1.let命令 [ 基本用法 ] let命令的用法与var类似,用于声明一个变量,但是let声明的变量只能在let所在的代码块内有效: 上述代码块中使用let和var声明了两个变量.然后在代码块之外调 ...

  4. ECMAScript6-let与const命令详解

    前言 <ECMAScript入门>是一本开源的JavaScript语言教程,全面介绍ECMAScript6新引入的语法特性. let和const命令,是第一章开始介绍,也是比较基础的知识. ...

  5. ECMAScript 6 第一天 let和const命令

    ES6新增声明变量的方法let命令,const命令. (ES5只有两种声明变量的方法:var 命令和 function 命令.) let命令,用来声明变量. 与var声明变量不同于: 1.  let声 ...

  6. ES6 let和const命令(4)

    const声明的常量只在当前代码块有效.如果想设置跨模块的常量,可以采用下面的写法. //constants.js模块 export const A = 1; export const B = 3; ...

  7. 1 let和const

    let命令 1)let声明的变量只在let命令所在的代码块内有效,如:   { let a = ; ;} a // ReferenceError: a is not defined. b 对于for循 ...

  8. React 语法之let和const命令

    let命令 基本用法 ES6新增了let命令,用来声明变量.它的用法类似于var,但是所声明的变量,只在let命令所在的代码块内有效. { let a = 10; var b = 1; } a // ...

  9. es6 let 和 const

    function test(){ let a = 1 for (let i =0;i<3;i++){ console.log(i)         //1,2 } console.log(i)  ...

随机推荐

  1. web前端面试官挖的那些坑(js)

    题目1: function Foo() { getName = function () { alert (1); }; return this; } Foo.getName = function () ...

  2. ASP.NET没有魔法——ASP.NET MVC 与数据库之MySQL

    之前介绍了My Blog如何使用ADO.NET来访问SQL Server获取数据.本章将介绍如何使用My SQL来完成数据管理. 在使用My SQL之前需确保开发环境中安装了My SQL数据库和Con ...

  3. IDL 矩阵运算

    矩阵相乘,A#B表示A的列乘以B的行,要求A的行数必须跟B的列数一致 IDL> A=[[0,1,2],[3,4,5]] IDL> B=[[0,1],[2,3],[4,5]] IDL> ...

  4. J2EE走向成功路-02-Struts2 配置(Maven)

    在上一篇中,介绍了使用jar包搭建Struts2框架,这一篇中来介绍一下在Maven环境下搭建Struts2框架,主要为配置Maven. 1.下载Maven,官网:http://maven.apach ...

  5. 11-05-sdust-个人赛赛后随想

    第二次打个人赛 这次居然打秃了,被A题卡的体无完肤.....结果之后转D题心里挂着A题...D题也被卡. 然后第二天不甘心,翘课来机房敲昨天的题,结果两题完全重新敲,都是10分钟左右敲完代码,A题1掉 ...

  6. maven overlays 合并多个war

    http://kyfxbl.iteye.com/blog/1678121 http://jdonee.iteye.com/blog/794226

  7. TQ2440--nandflash(K9F2G08U0A)驱动编写

    一.数据手册相关内容 1.地址传输周期 2.命令表 3.在寄存器中,会涉及TACLS,TWRPH0,TWRPH1的设定 这里我们就去看nandflash的数据手册 在这里我们可以清楚的看到,TACLS ...

  8. 【NOIP模拟】LCS及方案数(DP)

    Description 对于一个序列

  9. LeetCode 90. Subsets II (子集合之二)

    Given a collection of integers that might contain duplicates, nums, return all possible subsets. Not ...

  10. 03-从零玩转JavaWeb-创建类与对象

    创建类创建对象 一.什么是成员变量 对象的一些状态特征使用成员变量表示   二.行为什么什么表示 对象的 行为 使用 方法 表示   三.如何创建对象 class 类名{0 ~ N个成员变量0 ~ N ...