@import url(http://i.cnblogs.com/Load.ashx?type=style&file=SyntaxHighlighter.css);@import url(/css/cuteeditor.css);
@import url(/css/cuteeditor.css);
@import url(http://i.cnblogs.com/Load.ashx?type=style&file=SyntaxHighlighter.css);@import url(/css/cuteeditor.css);
@import url(http://i.cnblogs.com/Load.ashx?type=style&file=SyntaxHighlighter.css);@import url(/css/cuteeditor.css);

1. 普通的变量:

     一般不考虑啥效率的情况下 可以在构造函数中进行赋值。考虑一下效率的可以再构造函数的初始化列表中进行。

 1 class CA 

 2 { 

 3 public: 

 4      int data; 

 5 public: 

 6      CA(); 

 7 }; 

 8    

 9 CA::CA():data(0) //……#1……初始化列表方式 

10 { 

11     //data = 0;//……#1……赋值方式 

12 }; 

2、static 静态变量:

      static变量属于类所有,而不属于类的对象,因此不管类被实例化了多少个对象,该变量都只有一个。在这种性质上理解,有点类似于全局变量的唯一性。

1 class CA 

2 { 

3 public: 

4      static int sum; 

5 

6 public: 

7     CA();  

8 }; 

9 int CA::sum=0;    //……#2……类外进行初始化 

3、const 常量变量:

     const常量需要在声明的时候即初始化。因此需要在变量创建的时候进行初始化。一般采用在构造函数的初始化列表中进行。

 1 class CA 

 2 { 

 3 public: 

 4     const int max; 

 5 public: 

 6     CA(); 

 7 }; 

 8 

 9 CA::CA():max(100) 

10 { 

11 } 

4、Reference 引用型变量:

      引用型变量和const变量类似。需要在创建的时候即进行初始化。也是在初始化列表中进行。但需要注意用Reference类型。

 1 class CA 

 2 { 

 3 public: 

 4     int init; 

 5     int& counter; 

 6 public: 

 7     CA(); 

 8 }; 

 9 

10 CA::CA(): counter(&init) 

11 { 

12 } 

5、const static integral 变量:

     对于既是const又是static 而且还是整形变量,C++是给予特权的(但是不同的编译器可能有会有不同的支持,VC 6好像就不支持)。可以直接在类的定义中初始化。short可以,但float的不可以哦。

 1 // 例float类型只能在类外进行初始化 

 2 // const float CA::fmin = 3.14; 

 3 class CA 

 4 { 

 5 public: 

 6      //static const float fmin = 0.0;// only static const integral data members can be initialized within a class 

 7     const static int nmin = 0; 

 8     …… 

 9 public: 

10    ……   

11 }; 

总结起来,可以初始化的情况有如下四个地方:

1、在类的定义中进行的,只有const 且 static 且 integral 的变量。

2、在类的构造函数初始化列表中, 包括const对象和Reference对象。

3、在类的定义之外初始化的,包括static变量。因为它是属于类的唯一变量。

4、普通的变量可以在构造函数的内部,通过赋值方式进行。当然这样效率不高。

C++类中成员变量的初始化总结的更多相关文章

  1. C++类中成员变量的初始化总结(转帖)

    本文转自:C++类中成员变量的初始化总结 1. 普通的变量:      一般不考虑啥效率的情况下 可以在构造函数中进行赋值.考虑一下效率的可以再构造函数的初始化列表中进行.  1 class CA  ...

  2. C/C++ - 类中成员变量是引用

    C++引用 引用在定义时必须初始化,否则编译时便会报错.如果类(自定义类型)的成员是引用类型,需要注意一些问题. 引用成员变量 并不为这个变量新辟空间:类对象做成员变量则是要对其新辟一段空间的 不能有 ...

  3. linux C++类中成员变量和函数的使用

    1.undefined reference to XXX 问题原因 1)XXX所在的so库等未指定 2)XXX在类中实现的时候没有加上类::函数的格式 2. was not declared in t ...

  4. C++类中静态变量和普通变量的区别

    静态变量: 1.静态变量会被编到程序的exe里面,从程序启动到结束,它一直存在: 2.静态变量的初始化值为0: 3.全局变量默认是静态变量: 4.在类中的函数变量前面加了static的也是静态变量,只 ...

  5. java中对类中成员的排序

    要求:编写一个程序.程序中定义一个类circle,其中有数据成员radius:创建一个有5个circle型元素的数组,其radius值分别为2.10.8.4.121.调用Arrays.sort()给这 ...

  6. 类中被final修饰的成员变量需要初始化

    类中被final修饰的成员变量需要初始化,否则编译不通过,因为final修饰后不能再赋值,因此必须初始化.

  7. 定义一个Person类,其中包括:1.定义属性:姓名、年龄、民族作为成员变量。定义静态成员变量:人数2.定义构造方法:对成员变量进行初始化。3.定义多个方法:分别显示相应的属性值,例如getName(){System.out.print("名称="+name+";"); }4.定义一个方法“成长”:实现年龄的增加,每执行一次年龄增加1

    题目显示不全,完整题目描述: (1)定义一个Person类,其中包括:1.定义属性:姓名:年龄:民族作为成员变量.定义静态成员变量:人数2.定义构造方法:对成员变量进行初始化.3.定义多个方法:分别显 ...

  8. C++中类成员变量在初始化列表中的初始化顺序

    引子:我们知道,C++中类成员变量的初始化顺序与其在类中的声明顺序是有关的. 先看代码: class TestClass1 { public: TestClass1() { cout << ...

  9. python中的类的成员变量以及property函数

    1 python类的各种变量 1.1 全局变量 在类外定义的变量. 1.2 类变量 定义在类里面,所有的函数外面的变量.这个变量只有一份,是所有的对象共有的.在类外用“类.”来引用. 1.3 实例变量 ...

随机推荐

  1. 华为OJ平台试题 —— 数组:输入n个整数,输出当中最小的k个

    输入n个整数.输出当中最小的k个: 代码: /*  * 输入n个整数,输出当中最小的k个.  * 输入说明:1.输入两个整数:2.输入一个整数数组  * 输出说明:输出一个整数数组  */ <p ...

  2. jquery动态调整div大小使其宽度始终为浏览器宽度

    需要设置宽度为整个浏览器宽度的div,当然我们可以使用相对布局的方式做到这一点,下面是具体实现,大家可以参考下 有时候我们需要设置宽度为整个浏览器宽度的div,当然我们可以使用相对布局的方式做到这一点 ...

  3. caffe进行finetune时出现"shapeequals(proto) shape mismatch (reshape not set)"的解决办法

    声明:加载的caffemodel会根据你的net.prototxt文件里的各个layer的name来进行参数赋值. 错误:[Caffe]: Check failed: ShapeEquals(prot ...

  4. tarjan求强连通分量+缩点 模板

    #define N 100100 #define M 200200 int n,m; int id,index; //id表示缩点后点的id,index表示进行tarjan算法时访问的点先后 int ...

  5. Leetcode-Populating Next Right Pointer in Binary Tree II

    Follow up for problem "Populating Next Right Pointers in Each Node". What if the given tre ...

  6. js写css()方法,记得加引号“ ”,除非是数字

    js写css()方法,记得加引号“ ”,除非是数字.如: $("#android").css({ "position": "absolute" ...

  7. Java基础系列(八)序列化与反序列化

    先来看两个例子 示例一:将对象保存成字节数组,再把对象的字节数组还原为对象 示例中用到的Bean package com.huawei.beans; import java.io.Serializab ...

  8. MyBatis 从入门到熟悉.md

    目录 MyBatis从入门到熟悉 MyBatis Generator MyBatis 测试 一对一 一对多 多对多 总结 参考 MyBatis从入门到熟悉 以下代码获取地址: https://gith ...

  9. 第四课(2)——mysql配置参数讲解

    *****************general***************** user 启动mysql domain的用户 port 数据库端口号 socket 数据库socket文件的路径 p ...

  10. 你不知道的Javascript(上卷)读书笔记之四 ---- 提升、this

    1. 提升 使用var声明的变量声明和函数的声明(函数表达式不会)会被提升至所在函数作用域顶部 a. 从编译器角度出发 回忆一下, 中关于编译器的内容,引擎会在解释 JavaScript 代码之前首先 ...