C++, const:】的更多相关文章

const: 1.如果把const放在变量类型前,说明这个变量的值是保持不变的(即为常量),改变量必须在定义时初始化,初始化后对她的任何赋值都是非法的. 2.当指针或是引用指向一个常量时,必须在类型名前使用const标示这个指针或是引用指向的“变量”为常量,没有的话就是语法错误. 3.假如变量是一个非常量变量,而指针或者引用的类型名前使用了const,那么可以直接修改变量,不能通过指针或者引用修改变量. 4.如果想让一个指针本身成为一个const的,就要在*后加const,即int*const…
        问题: const成员函数和普通成员函数可以是同名同参数吗? 可以,这是一种函数的重载. const成员函数可不可以修改对象的成员变量的值? 不可以修改.//error C3490: 由于正在通过常量对象访问"year",因此无法对其进行修改 非const成员函数是否可以访问const对象成员? 不可以访问. //error C2662: "Time::show_time": 不能将"this"指针从"const Tim…
问题描述:const 与 define 宏定义之间的区别 (1) 编译器处理方式不同     define宏是在预处理阶段展开:     const常量是编译运行阶段使用: (2) 类型和安全检查不同     define宏没有类型,不做任何类型检查,仅仅是展开:     const常量有具体的类型,在编译阶段会执行类型检查: (3) 存储方式不同     define宏仅仅是展开,有多少地方使用,就展开多少次,不会分配内存:     const常量会在内存中分配(可以是堆中也可以是栈中): 利…
(声明, 本文的所有代码均在node的最新稳定版本v4.4.3中执行的, 如果在浏览器中执行请把JS的运行环境提升为ES6) 以前一直用var定义变量, 现在有了两种新的定义变量的方式, 1: let, 2: const:本文大概概括下使用let和const定义变量有哪些好处: let: 1:声明提前 使用var声明变量,存在声明提前的问题, 输出的tmp为"undefined": { var tmp = new Date(); let f = function (){ console…
Effective C++ Chapter 1. 让自己习惯C++(Accustoming Yourself to C++) Item 3. 尽可能使用 const (Use const whenever possible) 1. const 与语义约束 const 允许指定一个语义约束(也就是指定一个"不该被改动"的对象),而编译器强制实施这项约束.它可以在 classes 外部修饰 global 或 namespace(见 Item2)作用域中的常量,或修饰文件.函数.或区块作用域…
与引用一样,也可以令指针指向常量或非常量,类似于常量引用,指向常量的指针不能用于改变其所指对象的值.要想存放常量对象的地址,只能使用指向常量的指针: const double pi = 3.14; // pi是个常量,它的值不能改变 double *ptr = π // 错误,ptr是一个普通的指针 const doublt *cptr = π // 正确,cptr可以指向一个双精度常量 *cptr = ; // 错误,不能给*cptr赋值 允许令一个指向常量的指针指向一个非常量对象: doub…
总结const. readonly. static三者区别: (有人问我,看似简单,我也没能立刻回答出来,总结一下,分享一下.) const:静态常量,也称编译时常量(compile-time constants),属于类型级,通过类名直接访问,被所有对象共享! a.叫编译时常量的原因是它编译时会将其替换为所对应的值: b.静态常量在速度上会稍稍快一些,但是灵活性却比动态常量差一些: c.静态常量,隐式是静态的,即被static隐式修饰过,不能再用static重复修饰, d.在声明时初始化: e…
es是js的规范,而js是具体实现 将es6转化为es5代码工具:运用的多的是babel 在线转换地址:babel,traceur(属于谷歌)   1.let申明变量:let其实可以完全取代var,并且没有var这么多副作用 { var a = 10; let b = 10;//let申明的变量是块级作用域 } console.log(a) // console.log(b)//b is not defined let很适合的一种场景是:for for (let i = 0; i < 3; i+…
const:静态常量,也称编译时常量(compile-time constants),属于类型级,通过类名直接访问,被所有对象共享! a.叫编译时常量的原因是它编译时会将其替换为所对应的值: b.静态常量在速度上会稍稍快一些,但是灵活性却比动态常量差一些: c.静态常量,隐式是静态的,即被static隐式修饰过,不能再用static重复修饰, d.在声明时初始化: e.静态常量只能被声明为简单的数据类型(内建的int和浮点型).枚举或字符串. f.应用场合例如:Math.PI的定义(要声明一些从…
var 重新赋值,重新定义,作用域 属于:function scope: let 声明的变量只在 let 命令所在的代码块内有效,Block scope. const 声明一个只读的常量,一旦声明,常量的值就不能改变.   传送门:https://www.runoob.com/w3cnote/es6-let-const.html 对比一:作用域:var:function scope,所以以下代码,var totalPrice 为全局:let,const为块级作用域,只作用在if条件范围内: va…
所谓的块级作用域:形成一个暂时性的死区:{    } 一.共同点: a:都是用来声明变量: b:都能形成一个块级作用域: c:都只能在声明变量的块级作用域里面有效: 二.不同点: 1.let: a:在同一作用域里面不能使用let声明多个相同变量: b:变量不会泄露在全局: c:let声明的变量不会进行变量的提升: 2.const: a:也不会进行变量的提升: b:const常用来声明一个常量:用const声明的变量的值时不能改变的!!! 如果用const声明变量的话-----Uncaught T…
const,static,extern 简介 一.const与宏的区别: const简介:之前常用的字符串常量,一般是抽成宏,但是苹果不推荐我们抽成宏,推荐我们使用const常量. 执行时刻:宏是预编译 ( 编译之前处理 ),const是编译阶段. 编译检查:宏不做检查,不会报编译错误,只是替换,const会编译检查,会报编译错误. 宏的好处:宏能定义一些函数,方法,const不能. 宏的坏处:使用大量宏,容易造成编译时间久,每次都需要重新替换. 注意:很多Blog都说使用宏,会消耗很多内存,我…
块级作用域 ES5没有块级作用域,只有全局作用域和函数作用域,由于这一点,变量的作用域甚广,所以一进入函数就要马上将它创建出来.这就造成了所谓的变量提升. ES5的"变量提升"这一特性往往一不小心就会造成一下错误: 内层变量覆盖外层变量 var tmp = new Date(); function f() { console.log(tmp); if (false) { //执行则undefined var tmp = "hello world"; } } 变量泄露…
ES6笔记(一):ES6所改良的javascript“缺陷”   块级作用域 ES5没有块级作用域,只有全局作用域和函数作用域,由于这一点,变量的作用域甚广,所以一进入函数就要马上将它创建出来.这就造成了所谓的变量提升. ES5的“变量提升”这一特性往往一不小心就会造成一下错误: 内层变量覆盖外层变量 var tmp = new Date(); function f() { console.log(tmp); if (false) { //执行则undefined var tmp = "hell…
示例程序: #include <iostream> #include <set> using   namespace std ; class   StudentT { public : int id ; string name ; public : StudentT ( int _id , string _name )   : id ( _id ), name ( _name )   {       } int getId ()   {           return id ; …
const: 1 定义变量 ,如下写法都可以: TYPE const ValueName = value;                  const TYPE ValueName = value; 2 当作为全局变量并且在他文件也想使用时:(默认const具有局部性) 1.CPP  :extern const TYPE ValueName = value;定义 2.CPP:  extern const  TYPE ValueName; 外部声明 上面两个const 和TYPE可以颠倒. 3…
复习c++,有必要对一些东西做一下笔记,方便以后学习,如有问题,欢迎提出. 首先,最常用两种复合类型应该是引用和指针. 所谓复合类型,是在基本类型基础(如:int)上定义的类型. 引用是c++的一个复合类型,首先,它和指针不同的是它并不是一个对象,仅仅只是另一个对象的别名.而且,引用绑定的东西必须是一个对象,引用不是对象,所以定义引用的引用是不合法的. 也不能定义字面量的引用.同时,普通引用的绑定对象与引用定义类型必须相同. 如: ;//错误的,不能定义字面量 double b = 1.22;…
如果关键字出现在星号左边,表示被指物是常量: 如果出现在星号右边,表示指针本身是常量: 如果出现在星号两边,表示被指物和指针都是常量. void f1(const Widget* pw); //f1和f2都是指向一个常量的指针. void f2(Widget const * pw);// 迭代器与const: const std::vector<int>::iterator iter=vec.begin(); //iter的作用就像T*const *iter=; //right iter++;…
前景提要: 最近大家都在面试,讨论最多.最基础的问题,莫过于“关于const和readonly常见的笔试题剖析”,等等的大牛解析.我就是一个小菜,只不过,有点不敢苟同大牛的意见.废话少说,进入重点. 小斗大牛: 关于const和readonly常见的笔试题剖析(http://www.cnblogs.com/wolf-sun/p/3599209.html) 上个帖子有牛回我,有些偏激,可能有点吧,但是我不想看到所谓大牛,误人子弟,而且还说的糊里糊涂! 我只是一只小菜鸟!带着怀疑的精神,来探究问题!…
重开发人员的劳动成果,转载的时候请务必注明出处:http://blog.csdn.net/haomengzhu/article/details/30475395 Sprite  Sprite 能够说是游戏中最重要的组成元素: 它描写叙述了游戏中的精灵.是 Node 的一个最重要也最灵活的子类. Sprite 非常重要.它代表了游戏中一个最小的可见单位. 同一时候Sprite 也非常灵活.它装载了一个平面纹理.具有丰富的表现力,并且 能够通过多种方式载入. 假设说 Scene 和 Layer 代表…
PHP 面向对象中常见关键字的使用: 1.final :final关键字可以加在类或者类中方法之前,但是不能使用final标识成员属性. 作用: 使用final标识的类,不能被继承. 在类中使用final标识的成员方法,在子类中不能覆盖. 总结:final表示为最终的意思,所以使用final关键字的类或者类中的成员方法是不能被更改的. 2.static :static关键字将类中的成员属性或者成员方法标识为静态的,static标识的成员属性属于整个类,static成员总是唯一存在的,被类的全部对…
[const] 0.普通const对象定义在栈空间中 { ; ; cout << &a << ' ' << &b; } Result: 0x22abec 0x22abe8 注:Code::Blocks + Cygwin测得. 1.对变量类型加以限定,使之不能被修改: const int e1 = 100; e1 = 101; // error 2.const对象必须被初始化: const int e2; // error 3.const对象和non-co…
第二遍文章我打算把const和readonly的区别拿出来讲下,因为写代码这么久我都还没搞清楚这两者的区别,实在有点惭愧,所以这一次我打算搞清楚它. 定义 来看看MSDN的解释: readonly:readonly关键字是可以在字段上使用的修饰符.当字段声明包括readonly修饰符时,该声明引入的字段赋值只能作为声明的一部分,或者出现在同一类的构造函数中. const:使用 const 关键字来声明某个常量字段或常量局部变量. 常量字段和常量局部变量不是变量并且不能修改. 太多理论的讲解有些人…
范例: class matrix { public: matrix(){}; const double getvalue(const unsigned row, const unsigned column) const; private: balabalabala; } 上述范例声明了一个martrix类,该类包含一个getvalue接口,内含3个const标识符,这也是const在C++函数中最常出现的三个位置. 我们可以通过 matrix a; double b=a.getvalue(x,y…
readonly 关键字与 const: const 字段只能在该字段的声明中初始化.readonly 字段可以在声明或构造函数中初始化. 因此,根据所使用的构造函数,readonly 字段可能具有不同的值.const 字段是编译时常数,而 readonly 字段可用于运行时常数     private const string FindChipWebSite = "Mouser";   const变量在运行前已确定值 ,所以静态成员中可以调用到 readonly运行时才确定值,如果静…
最近开始由学习c转到c++:从面向过程到面向对象的转变中,总是以面向过程的思路思考,发现有很多的不同,今天就稍微发表一下我的见解,如果那里出错,希望大神可以帮忙指出来. 首先是const : 在C语法中定义是:由const定义的常量具有不可变性. 意思是说定义的常量在被赋值后是无法修改的 { const int a = 10; a = 20;//如果这样写编译器则会报错,意思就是不能被修改 } 本来这样是没有问题的但是无意中我这样写: #include <stdio.h> #include &…
我们通过声明.初始化.值的可变性.作用域.变量提升以及在工作中如何使用等多个方面来详细了解var.let.const等关键字功能与特点. 声明 var,let:可以先声明,后赋值(初始化),默认值是 undefined. const:不能将声明与初始化单独分开,否则报错,没有默认值. var:声明的标识符可以被重复声明多次,多次声明进行的都是覆盖操作, const,let:同一个标识符不能同时声明多次,否则报语法错误. let variable; let variable; //Uncaught…
今天学习了es6中的let和const命令,借此整理一下笔记. let : let 和 var 的声明方式一样,但有 var 比不上的优点.下面用 var 和 let 的例子来加深对 let 的理解. 1 let 只作用与当前作用域中  在声明var时,在无特别情况下,代码块里的var外部也可以访问到的,但是let声明之后,外部是访问不到的,会报错. { var a = 123 let b = 456 } console.log(a) console.log(b) // ReferenceErr…
今天刚刚学JavaScript 因为以前学过.学起来也就轻松.今天在练习.流程控制语句的时候,用WebStrom 写的时候 var 声明变量的时候 下面老是有一条白线.开始以为是开发环境有问题 然后,我就各种百度查.后来查到ECMAscript 6(es6) 之前学的时候肯本不知道.就简单看了一下.主要用来规范JavaScript(JS用的越来越强大) 地址:http://es6.ruanyifeng.com/#docs/let 然后我看了下 JS 提升机制(hoisting) 然后为了解决这个…
1. 优化简介 MySQL性能优化包括:查询优化.数据库结构优化.MySQL服务器优化等. 2. 查询优化 2.1 分析查询语句 MySQL提供EXPLAIN和DESCRIBE,用来分析查询语句. EXPLAIN语句的基本语法: EXPLAIN [EXTENDED] SELECT select_options 其中,EXTENDED用于EXPLAIN产生附加信息,select_options是SELECT语句的查询选项,包括FROM WHERE子句等. mysql> EXPLAIN SELECT…