为了限制常数的范围class中。你必须要做出成为class成员;而要确保这是丝毫不亚于有一个恒定的实体。你必须要做出成为static员:

Class Gameplayer

{

Private:

Staticconst int Number = 5;  //常量声明式

Intscores[Number];  //使用该常量

}。

然而你所示是Number的声明式而非定义式。通常C++要求你对你所使用的不论什么东西提供一个定义式,但假设他是个class专属常量又是static且为整数类型,则需特殊处理。仅仅要不取他们的地址,你能够声明并使用他们而无须提供定义式。但假设你取某个class专属常量的地址,或纵使你不取其地址而你的编译器却坚持要看到一个定义式,你就必须另外提供定义式例如以下:

Const int Gameplayer::Number;  //Number的定义

请把这个式子放进一个实现问价而非头文件。

因为class常量已在声明时获得初值。因此定义时不能够再设初值。

对于constkeyword在STL迭代器中的使用:

STL迭代器系以指针为依据塑模出来,所以迭代器的作用就像个T*指针。声明迭代器为const就像声明指针为const一样(即声明一个T* const指针),表示这个迭代器不得指向不同的东西,但它所指的东西是能够改变的。

假设你希望迭代器所指的东西不可被修改(既希望STL模拟一个const T*指针),你须要的是const_iterator;

Std::vector<int>  vec;

Const vector<int>::iterator iter =vec.begin(); //iter的作用像是T* const

*iter = 10; //能够

++iter;// 不能够

Vector<int>::const_iterator citer =vec.begin();

*citer = 10;  //错误

++citer;// 能够

Cost成员函数

将const作用域成员函数的目的,是为了确认该成员函数可作用于const对象身上。

C++有着十分固定的“成员初始化次序”。次序总是同样:base classes更早于其derived classes被初始化。而class的成员变量总是以其声明次序被初始化。

即使他们的成员初值列中以不同的次序出现,也不会有不论什么影响。

当你在成员初值列中条列各个成员时,最好总是以其声明次序为次序。

构造函数最好使用成员初值列,而不要在构造函数本体内使用赋值操作。初值列列出的成员变量,其排序次序应该和它们在class中的声明次序同样。

什么时候empty class(空类)不再是个empty class呢?当C++处理过它之后。假设你自己没声明。编译器就会为它声明(编译器版本号的)一个copy 构造函数、一个copy assignment操作符和一个析构函数。此外假设你没有声明不论什么构造函数,编译器也会为你声明一个default构造函数。全部这些函数都是public且inline。同一时候仅仅有当这些函数被须要,他们才会被编译创建出来。假设一旦用户自己定义了不论什么构造函数,编译器就不会合成一个default 构造函数

假设你打算在一个“内含reference成员”的class内支持赋值操作,你必须自定义copy assignment操作符。

面对内含const成员的classes,编译器也是不赋值。也须要自定义copy assignment.假设某个base classes将copy assignment运营商宣布privaete,编译器将拒绝derived class生成copy assignment运营商。

还有自定义这些功能更可靠。假设你不想使用编译器 - 生成函数自己主动,但是应当理解的是拒绝

颂值(assignment)操作员返回reference to *this

C++基础知识---static const初始化成员变量的更多相关文章

  1. 【C++】const,static和static const类型成员变量声明及其初始化

    1)const定义的常量在超出其作用域之后其空间会被释放,而static定义的静态常量在函数执行后不会释放其存储空间 void f1() { ; cout<<x<<endl; ...

  2. C++ static、const和static const类型成员变量声明以及初始化

    C++ static.const和static const 以及它们的初始化 const定义的常量在超出其作用域之后其空间会被释放,而static定义的静态常量在函数执行后不会释放其存储空间. sta ...

  3. static 类成员变量 和 static const类成员变量

    1.使用static类的优点: (1)避免与其他类的成员或者全局变量冲突 (2)可以封装 (3)阅读性好 2.static 数据成员独立于该类的任意对象而存在 static数据成员的类型可以是该成员所 ...

  4. 阶段1 语言基础+高级_1-3-Java语言高级_1-常用API_1_第6节 static静态_12_静态static关键字修饰成员变量

    创建一个学生类 定义成员变量,无参构造,全参构造.成员变量的getter和setter 所在教室必须是一样的,定义所在教室 下面来创建两个学生 只给one的room赋值了.two的教室并没有赋值.都输 ...

  5. c++ 基础知识 0001 const 知识1

    1. C++ const用法 尽可能使用const 2. C++ const 允许指定一个语义约束,编译器会强制实施这个约束,允许程序员告诉编译器某值是保持不变的.如果在编程中确实有某个值保持不变,就 ...

  6. C++入门经典-例7.2-利用构造函数初始化成员变量

    1:在创建对象时,程序自动调用构造函数.同一个类中可以有多个构造函数,通过这样的形式创建一个CPerson对象,例如: CPerson p1(0,"jack",22,7000); ...

  7. 从汇编看c++初始化列表初始化成员变量

    简略来说,编译器会对初始化列表按照成员变量的声明顺序重新一一排序,安插到构造函数中进行初始化操作,而且这些初始化操作在构造函数里面用户自己定义的任何代码之前. 下面是c++源码: class X { ...

  8. Java基础笔记(七)—— 成员变量、静态变量、局部变量

    public class Test { int c; //成员变量(实例变量) static int s1; //静态变量(类变量)(全局变量) public static void main(Str ...

  9. C++之const类成员变量,const成员函数

    const修饰类的成员函数 const修饰变量一般有两种方式:const T *a,或者 T const *a,这两者都是一样的,主要看const位于*的左边还是右边,这里不再赘述,主要来看一下当co ...

随机推荐

  1. 基于visual Studio2013解决面试题之0409判断一个栈是否另外一个栈的弹出序列

     题目

  2. 移动端 前端框架 amaze ui

    移动端 前端框架 amaze ui http://amazeui.org/?_ver=2.x

  3. [置顶] 关于本博客 http://www.imobilebbs.com

    由于时间上的关系,本博客不再和引路蜂移动软件博客同步更新,    请直接访问 http://www.imobilebbs.com 谢谢您的支持,再见   引路蜂博客

  4. android 细节之 旋转动画

    Flip Animation for Android: 近期项目中用到了一个小动画,让物体实现一定的3D旋转效果,现记录例如以下: public class FlipAnimation extends ...

  5. boost::thread之while(true)型线程终结方法

    我们的程序中经常会用到线程来执行某些异步操作,而有些时候我们的线程执行的函数是这个样子的: void ThreadBody() { while( true ) { std::cout << ...

  6. ExtJs4 笔记(13) Ext.menu.Menu 菜单、Ext.draw.Component 绘图、Ext.resizer.Resizer 大小变更

    本篇讲解菜单.绘图.还有大小变更控件.菜单控件可以附加到各种其他控件中,比如按钮.工具栏等,甚至可以直接通过通过右键打开(模拟右键菜单):ext对绘图的支持可以让我们通过js来绘图:大小变更控件可以让 ...

  7. 开发人员福利!ChromeSnifferPlus 插件正式登陆 Chrome Web Store

    今天(2014-10-30)下午,ChromeSnifferPlus 插件正式登陆 Chrome Web Store. 在线安装地址: https://chrome.google.com/websto ...

  8. 无边无状态栏窗口(使用GetWindowLongPtr设置GWL_EXSTYLE)

    通过SetWindowLongPtr来设置窗口样式 var NewStyle: Integer; begin Application.Initialize; Application.MainFormO ...

  9. Lucene.Net 2.3.1开发介绍 —— 四、搜索(一)

    原文:Lucene.Net 2.3.1开发介绍 -- 四.搜索(一) 既然是内容筛选,或者说是搜索引擎,有索引,必然要有搜索.搜索虽然与索引有关,那也只是与索引后的文件有关,和索引的程序是无关的,因此 ...

  10. 基础知识(3)- Java的基本程序设计结构

    3.1 一个简单的Java应用程序 3.2 注释 3.3 数据类型  3.3.1 整型  3.3.2 浮点类型  3.3.3 char类型  3.3.4 boolean类型 3.4 变量  3.4.1 ...