C++:用成员初始化列表对数据成员初始化
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是整型变量的引用 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。 */
C++:用成员初始化列表对数据成员初始化相关推荐
- C++类的常量数据成员,静态数据成员,常量静态数据成员,枚举类型
文章目录 C++类的常量数据成员,静态数据成员,常量静态数据成员 const成员 static成员 静态整型常量数据成员 C++枚举类型 C++中作用域受限的枚举类型 经典做法 C++11的枚举类 C ...
- 定义一个三角形类(TRI)及其派生类三角柱体类(COL)。其中三角形类可以计算三角形的面积和周长;三角柱体类可以计算柱体的体积和表面积。其具体要求如下: (1)TRI的成员如下: 私有数据成员
题目要求: 定义一个三角形类(TRI)及其派生类三角柱体类(COL).其中三角形类可以计算三角形的面积和周长:三角柱体类可以计算柱体的体积和表面积.其具体要求如下: (1)TRI的成员如下: 私有数据 ...
- 静态数据成员与非静态数据成员的区别
数据成员: 静态数据成员是类的一部分,为类的所有实例共享(静态区): 非静态数据成员,类的每个实例都有一份拷贝(动态区). 静态数据成员的访问: 静态数据成员是类的一部分,在产生任何实例之前已经存在, ...
- 静态数据成员与非静态数据成员
静态数据成员 用static来声明静态成员,它是类的一部分,有该类中的所有对象共同使用和维护,实现类中数据的共享(静态区),要受private控制符影响. 非静态数据成员 类的每个实例都有一份 ...
- Python 面向对象设计基础实战【私有成员、保护成员、公有成员、数据成员、实例化、方法】
Reference:<Python程序设计基础(第2版)> Reference:<Python中的装饰器>https://www.jianshu.com/p/417ac7d95 ...
- 对象的初始化列表const变量的初始化
当B类中有A类并且A类还有自己的有参数构造函数的时候,那这时若是B再使用默认构造函数就不能使用了,因为B不能对A进行初始化: #include <iostream> using names ...
- 现代C++新特性 非静态数据成员默认初始化
文字版PDF文档链接:现代C++新特性(文字版)-C++文档类资源-CSDN下载 1.使用默认初始化 在C++11以前,对非静态数据成员初始化需要用到初始化列表,当类的数据成员和构造函数较多时,编写构 ...
- c++构造函数成员初始化中赋值和初始化列表两种方式的区别
先总结下: 由于类成员初始化总在构造函数执行之前 1)从必要性: a. 成员是类或结构,且构造函数带参数:成员初始化时无法调用缺省(无参)构造函数 b. 成员是常量或引用:成员无法赋值,只能被初始化 ...
- 类的初始化列表_【Flutter 111】Flutter手把手教程Dart语言——类、类的的成员变量和方法、类的构造函数...
类 Dart是一种面向对象的语言,所有对象都是一个类的实例,而所有的类都继承自Object类.每个除了Object类之外的类都只有一个超类,一个类的代码可以在其它多个类继承中重复使用. 类的实例变量 ...
最新文章
- vector、map删除当前记录
- WinInet编程详解
- sizeof 头文件_c/c++基础之sizeof用法
- 模拟简单计算器及比较大小
- 通过CSS让html网页中的内容不可选
- python__基础 : 类的__init__,__str__,__del__方法
- 如何对加载的数个模型只进行transform呢
- 汉字乱码_别欺负我读书少,这些真的不是乱码,是汉字吗?你认识几个?
- C/C++通用Makefile
- Cocos2d-x3.1FileUtilsTest使用
- Ubuntu 安装php mcrypt
- 作业 给计算机编号 winform
- 微型计算机8位数据总线,微机原理答案1
- word使用中的标题
- UML画图工具PlantUML与Visual Paradigm详解
- 计算机系统盘没用的东西怎么删除,怎样清理电脑c盘无用的东西
- 京东疯狂月薪36k程序员最新Java面试题(常见面试题及答案汇总)
- 调用方法有抛出异常的解决办法
- 从零到壹搭建一个商城架构--k8s集群安装
- 无涯自动化学习20200901
热门文章
- dict过滤 python_关于python:过滤dict以只包含某些键?
- jq 直接调用php文件_js调用php和php调用js的方法举例
- python编码解码的过程_使用Python过程中的编码和解码
- centos vim 安装插件本质研究
- ubuntu11.10 mysql_Ubuntu11.10下mysql+apache+PHP
- 傲腾内存 可以用ghost系统_玩机小贴士:Intel傲腾内存你用过没有?
- 边缘计算架构_边缘计算架构梳理
- ajax连接云数据库密码,ajax和数据库连接
- elementui 下拉框回显_element-ui 中el-select表单不回显和校验不通过的问题
- c++变量重新赋值_Java基础二:一文讲透变量与数据类型