1、在声明类时,对数据成员的初始化工作一般在构造函数中用赋值语句进行。 
例如:

class Complex{private:double real;double imag;public:Complex(double r,double i)    //声明构造函数原型
        {...........}
};
Complex::Complex(double r,double i)     //在构造函数中用赋值语句对数据成员赋初值
{real = r;imag = i;
}

2、另一种初始化数据成员的方法---用成员初始化列表来实现对数据成员的初始化
带有成员初始化列表的构造函数的一般形式如下:

类名::构造函数名([参数表]):[(成员初始化列表)]
{
构造函数体 
}
成员初始化列表的一般形式为:
数据成员名1(初始值1),数据成员名2(初始值2),...........
例如:

class Complex{private:double real;double imag;public:Complex(double r,double i)  //声明构造函数原型
        {.............}
};
Complex::Complx(double r,double i):real(r),imag(i)//用形参r的值初始化数据成员real,用形参i的值初始化数据成员imag
{}    

3、对于用const修饰的数据成员,或是引用类型的数据成员,是不允许在构造函数中用赋值
语句直接赋值的,而是采用成员初始化列表对其进行初始化。

例:用成员初始化列表对引用类型的数据成员和const修饰的数据成员初始化。

 #include<iostream> using namespace std;class A{public:A(int x1):x(x1),rx(x),pi(3.14)    //用成员初始化列表对引用类型的数据成员rx和const修饰的数据成员pi初始化
         {}void print(){cout<<"x = "<<x<<" "<<"rx = "<<rx<<" "<<"pi = "<<pi<<endl; } private:int x;int &rx;             //rx是整型变量的引用 const double pi;     //pi是用const修饰的常量
 };int main(){A a(10);a.print();return 0; }

例:  用成员初始化列表对数据成员进行初始化

#include<iostream>using namespace std;class D{public:D(int i):mem2(i),mem1(mem2+1)  //用成员初始化列表对数据成员进行初始化
        {cout<<"mem1:"<<mem1<<endl;cout<<"mem2:"<<mem2<<endl; } private:int mem1;int mem2;        }; int main(){D d(15);return 0;}/*注意:规定数据成员是按照它们在类中声明的顺序进行初始化的,数据成员mem1应在mem2之前被初始化。因此,在mem2尚未初始化时,mem1使用“mem2+1”的来初始化,所得结果是随机的,而不是16。 */ 

程序猿神奇的手,每时每刻,这双手都在改变着世界的交互方式!
本文转自当天真遇到现实博客园博客,原文链接:http://www.cnblogs.com/XYQ-208910/p/4912093.html,如需转载请自行联系原作者

C++:用成员初始化列表对数据成员初始化相关推荐

  1. C++类的常量数据成员,静态数据成员,常量静态数据成员,枚举类型

    文章目录 C++类的常量数据成员,静态数据成员,常量静态数据成员 const成员 static成员 静态整型常量数据成员 C++枚举类型 C++中作用域受限的枚举类型 经典做法 C++11的枚举类 C ...

  2. 定义一个三角形类(TRI)及其派生类三角柱体类(COL)。其中三角形类可以计算三角形的面积和周长;三角柱体类可以计算柱体的体积和表面积。其具体要求如下: (1)TRI的成员如下:  私有数据成员 

    题目要求: 定义一个三角形类(TRI)及其派生类三角柱体类(COL).其中三角形类可以计算三角形的面积和周长:三角柱体类可以计算柱体的体积和表面积.其具体要求如下: (1)TRI的成员如下: 私有数据 ...

  3. 静态数据成员与非静态数据成员的区别

    数据成员: 静态数据成员是类的一部分,为类的所有实例共享(静态区): 非静态数据成员,类的每个实例都有一份拷贝(动态区). 静态数据成员的访问: 静态数据成员是类的一部分,在产生任何实例之前已经存在, ...

  4. 静态数据成员与非静态数据成员

    静态数据成员   用static来声明静态成员,它是类的一部分,有该类中的所有对象共同使用和维护,实现类中数据的共享(静态区),要受private控制符影响. 非静态数据成员   类的每个实例都有一份 ...

  5. Python 面向对象设计基础实战【私有成员、保护成员、公有成员、数据成员、实例化、方法】

    Reference:<Python程序设计基础(第2版)> Reference:<Python中的装饰器>https://www.jianshu.com/p/417ac7d95 ...

  6. 对象的初始化列表const变量的初始化

    当B类中有A类并且A类还有自己的有参数构造函数的时候,那这时若是B再使用默认构造函数就不能使用了,因为B不能对A进行初始化: #include <iostream> using names ...

  7. 现代C++新特性 非静态数据成员默认初始化

    文字版PDF文档链接:现代C++新特性(文字版)-C++文档类资源-CSDN下载 1.使用默认初始化 在C++11以前,对非静态数据成员初始化需要用到初始化列表,当类的数据成员和构造函数较多时,编写构 ...

  8. c++构造函数成员初始化中赋值和初始化列表两种方式的区别

    先总结下: 由于类成员初始化总在构造函数执行之前 1)从必要性: a. 成员是类或结构,且构造函数带参数:成员初始化时无法调用缺省(无参)构造函数 b. 成员是常量或引用:成员无法赋值,只能被初始化 ...

  9. 类的初始化列表_【Flutter 111】Flutter手把手教程Dart语言——类、类的的成员变量和方法、类的构造函数...

    类 Dart是一种面向对象的语言,所有对象都是一个类的实例,而所有的类都继承自Object类.每个除了Object类之外的类都只有一个超类,一个类的代码可以在其它多个类继承中重复使用. 类的实例变量 ...

最新文章

  1. vector、map删除当前记录
  2. WinInet编程详解
  3. sizeof 头文件_c/c++基础之sizeof用法
  4. 模拟简单计算器及比较大小
  5. 通过CSS让html网页中的内容不可选
  6. python__基础 : 类的__init__,__str__,__del__方法
  7. 如何对加载的数个模型只进行transform呢
  8. 汉字乱码_别欺负我读书少,这些真的不是乱码,是汉字吗?你认识几个?
  9. C/C++通用Makefile
  10. Cocos2d-x3.1FileUtilsTest使用
  11. Ubuntu 安装php mcrypt
  12. 作业 给计算机编号 winform
  13. 微型计算机8位数据总线,微机原理答案1
  14. word使用中的标题
  15. UML画图工具PlantUML与Visual Paradigm详解
  16. 计算机系统盘没用的东西怎么删除,怎样清理电脑c盘无用的东西
  17. 京东疯狂月薪36k程序员最新Java面试题(常见面试题及答案汇总)
  18. 调用方法有抛出异常的解决办法
  19. 从零到壹搭建一个商城架构--k8s集群安装
  20. 无涯自动化学习20200901

热门文章

  1. dict过滤 python_关于python:过滤dict以只包含某些键?
  2. jq 直接调用php文件_js调用php和php调用js的方法举例
  3. python编码解码的过程_使用Python过程中的编码和解码
  4. centos vim 安装插件本质研究
  5. ubuntu11.10 mysql_Ubuntu11.10下mysql+apache+PHP
  6. 傲腾内存 可以用ghost系统_玩机小贴士:Intel傲腾内存你用过没有?
  7. 边缘计算架构_边缘计算架构梳理
  8. ajax连接云数据库密码,ajax和数据库连接
  9. elementui 下拉框回显_element-ui 中el-select表单不回显和校验不通过的问题
  10. c++变量重新赋值_Java基础二:一文讲透变量与数据类型