文档章节

C++有哪几种情况只能用初始化列表,而不能用赋值?

icheer
 icheer
发布于 2013/05/01 11:06
字数 338
阅读 292
收藏 1
C++有哪几种情况只能用初始化列表,而不能用赋值?

(1)对于const和reference类型成员变量,它们只能够被初始化而不能做赋值操作,因此只能用初始化列表;

初始化与赋值是不同的:
赋值是删除原值,赋予新值,构造函数的意思是先开辟空间然后为其赋值,只能算是赋值不算初始化;

初始化列表就不一样了,开辟空间和初始化是同时完成的,直接给予一个值;

常量不能被赋值,只能被初始化,所以必须在初始化列表中完成;

C++的引用也一定要初始化,所以必须在初始化列表中完成。

    1) 引用必须被初始化,指针不必;

    2) 引用初始化以后不能被改变,指针可以改变所指的对象;

    3) 不存在指向空值的引用,但是存在指向空值的指针。

上面这一段摘自:http://blog.csdn.net/yuliu0552/article/details/6631509

另外,子类在初始化自己时,如果父类没有默认的构造函数那么也必须用初始话列表进行初始化,在列表里调用父类的构造函数。

© 著作权归作者所有

共有 人打赏支持
icheer
粉丝 34
博文 206
码字总数 30712
作品 0
深圳
程序员
C++primer学习笔记(1)

作为大四应届生o( ̄︶ ̄)o 最近为了后续的面试工作地点看C++primer再次深入学习C++写里一点笔记: 如下: 1. C++四种强制转换: 1、static_cast:可以实现C++中内置基本数据类型之间的相互转换,...

微小的鱼233
03/02
0
0
C++ Primer 学习笔记(第三章:字符串、向量和数组)

C++ Primer 学习笔记(第三章:字符串、向量和数组) [TOC] 3.1 命名空间的声明 声明语句可以一行放多条。 位于头文件的代码,一般来说不应该使用声明。因为其内容会拷贝到每个使用该头文件的...

ShawnLue
2015/08/20
0
0
我所知道的一个简单类

我所知道的一个简单类   大家都说C++难学,我也正在学习,之所以难是可能因为没有了解C++中的一些很基础的东西,有点似懂非懂的感觉,而没有真正了解C++的运行机制,我一直在学习基础,这篇...

长征2号
2017/12/18
0
0
C++ Primer Plus(四)——复合类型

只能在定义数组时才能初始化,不能将一个数组赋值给另一个数组,但可以使用下标分别赋值给数组元素,但可以将一个string对象赋值给另一个string对象 如果只对数组的一部分初始化,其他元素自...

吃一堑消化不良
2015/11/06
0
0
C/C++中的static和extern关键字

一.C语言中的static关键字 在C语言中,static可以用来修饰局部变量,全局变量以及函数。在不同的情况下static的作用不尽相同。 (1)修饰局部变量 一般情况下,对于局部变量是存放在栈区的,并...

木木情深
2014/02/13
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

JS三元运算示例

1. topFlag=topFlag ==0?1:0; 等于 if(topFlag=00){ topFlag=1; }else if(topFlag == 1){ topFlag=0; } 2. 5>3?alert('5大'):alert('3大'); 即 if(5>3){alert('5大')}else{alert('3大')}; 注......

森火
今天
0
0
利用Slf4j的MDC跟踪方法调用链

why? 一个web项目通常提供很多URL访问地址, 项目一般都是分层处理,例如Controller——>Service——>DAO。 如果想根据日志查看用户一次请求都走了哪些方法(多数是查错误)。 如果系统是多人...

杨春炼
今天
9
0
Maven介绍及安装

Maven介绍及安装 以下内容是本人早期学习时的笔记,可能比较详实繁琐,现在复习一下Maven,顺便将内容抛出来,供大家一起学习进步。 一、Maven简介 Maven是Apache旗下的一款项目管理工具,是...

星汉
今天
0
0
小程序Aes解密

主要步骤: 1、下载AES源码(JS版) 2、在小程序中新建一个公共的文件夹,把AES源码拷贝进去(注意:需要暴露接口 module.exports = CryptoJS;) 3、添加一个用于加密解密的公共JS,可取名为...

Mr_Tea伯奕
今天
0
0
Go实现文件传输(基本传输可用)

发送端 package mainimport ("fmt""os""net""io")func SendFile(path string, connect net.Conn){file, oerr :=os.Open(path)if oerr !=nil{fmt.Println("Open", oerr)......

CHONGCHEN
今天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部