C++新特性探究(七):初始化列表(Initialization List)
前文:C++之构造函数和(构造)函数重载探究
相关博文:C++新特性探究(七):初始化列表(Initialization List)
相关博文:C++新特性探究(八):初始化列表(Initialization List)再探究
相关博文:C++之关于初始化列表(Initialization List)的一个补充示例
相关博文:C++之初始化列表的一个笔记
在使用C++编程的过程当中,常常需要在构造函数中对类的成员变量进行初始化,通常的方法有两种:
第一种方法:在构造函数体内通过赋值语句初始化
Thing(int a,int b,int c) {x=a;y=b;z=c;}
第二种方法:使用初始化列表形式初始化
Thing(int a,int b,int c):x(a),y(b),z(ccc) { }
初始化列表使用简单示例:
程序中为什么要使用初始化列表?
(1) 对于类类型的成员,使用初始化列表效率更高。
(2) 有些类型的成员变量必须使用初始化列表的形式初始化,如const成员、引用成员。
(3) 在继承时,子类的构造函数中初始化父类的成员时。
例1:
const常量必须得在初始化列表中赋值
例2:引用成员必须得在初始化列表中赋值
例3:在继承时,子类的构造函数中初始化父类的成员时必须使用初始化列表
附例3代码
//小问学编程
#include<iostream>
using namespace std;class Base
{public:Base(int i):b_number(i){}int get_number(){return b_number;}void print(){cout<<b_number<<endl;}
private:int b_number;
};class Derived:public Base
{public:Derived(int i,int j):Base(i),d_number(j){}void print(){//access number through get_number()cout<<get_number()<<" ";//cout<<b_number<<" ";cout<<d_number<<endl;}
private:int d_number;
};int main()
{Base a(2);Derived b(3,4);a.print();//print()in Basecout<<"b is";b.print();//print()in Derivedcout<<"base part of b is ";b.Base::print();return 0;
}
附:C++之关于初始化列表(Initialization List)的一个补充示例
C++新特性探究(七):初始化列表(Initialization List)相关推荐
- C++新特性探究(八):初始化列表(Initialization List)再探究
相关博文:C++新特性探究(七):初始化列表(Initialization List) 相关博文:C++新特性探究(八):初始化列表(Initialization List)再探究 相关博文:C++之 ...
- C++之关于初始化列表(Initialization List)的一个补充示例
相关博文:C++新特性探究(七):初始化列表(Initialization List) 相关博文:C++新特性探究(八):初始化列表(Initialization List)再探究 相关博文:C++之 ...
- C++新特性探究(9.1):functor仿函数探究
相关博文:C++新特性探究(九):functor仿函数 Functor 对象模拟函数 把类对象,像函数名一样使用. 仿函数(functor),就是使一个类的使用看上去像一个函数.其实现就是类中 ...
- C++新特性探究(十三):右值引用(r-value ref)探究
相关博文: C++新特性探究(十三):右值引用(r-value ref)&&探究 C++新特性探究(十六):move constructor移动构造 C++新特性探究(13.5):右值 ...
- C++新特性探究(十):Lambda
一. 匿名函数 简短函数,就地书写,调用.即Lambda存在的意义,常用于取代作回调用的简短函数指针与仿函数. 就地书写,因只有函数体,即无函数名,也称匿名函数. 格式 最小的 Lambda: ...
- C++新特性探究(九):functor仿函数
相关博文:C++新特性探究(9.1):functor仿函数探究 仿函数技术难度不高,但对菜鸟来说侮辱性极强! 一. operator( ) 重载了operator()的类的对象,在使用中,语法类似 ...
- Java 8新特性探究(二)深入解析默认方法
转载自 Java 8新特性探究(二)深入解析默认方法 什么是默认方法,为什么要有默认方法 简单说,就是接口可以有实现方法,而且不需要实现类去实现其方法.只需在方法名前面加个default关键字即可. ...
- C++新特性探究(13.6):右值引用再探究
相关博文: C++新特性探究(十三):右值引用(r-value ref)&&探究 C++新特性探究(十六):move constructor移动构造 C++新特性探究(13.5):右值 ...
- C++新特性探究(13.5):右值引用
相关博文: C++新特性探究(十三):右值引用(r-value ref)&&探究 C++新特性探究(十六):move constructor移动构造 C++新特性探究(13.5):右值 ...
最新文章
- “刷脸”之后 声纹识别有望成为新秀
- 欧几里得距离网络_Scientific Reports|基于集成相似度的神经网络药物相互作用预测...
- 每句话都可以品味一生
- 如何应对货期延迟(转自索菲外贸笔记)
- leetcode 687. Longest Univalue Path | 687. 最长同值路径(树形dp)
- 如果误删谷歌浏览器的书签,怎么恢复
- 信息学奥赛一本通 2061:【例1.2】梯形面积
- Android笔记 意图传值demo
- 数据结构大作业_大数据课程笔记
- 大数据爆炸改变企业的决策
- python利用PIL及openpyxl实现图片转为excel表格
- oracle中cube的作用,Oraclerollup和cube分析
- Circuit Breaker模式
- iOS自动化测试需求实现(iOS按键精灵类似)
- 麒麟座迷你板STLINK使用
- postgresql整理
- 用户画像原理、技术选型及架构实现
- python修改文件格式为jpg_利用python将webp文件转化为jpg文件,将png文件修改为jpg,图像重命名...
- nginx正向代理,提供爬虫请求代理
- RSA算法原理详解(简单易懂)