青青的博客分享 http://blog.sciencenet.cn/u/qingqing3721 青青的程序世界

博文

C++类构造函数初始化列表

已有 1695 次阅读 2011-4-6 05:09 |系统分类:科研笔记

  //以前学习中很模糊的一些概念  结构函数初始化列表以一个冒号开端, 接着是以逗号分隔的数据成员列表, 每个数据成员前面跟一个放在括号中的初始化式。 例如:  下面的例子中两个结构函数的后果是一样的。 并没有进行显式的初始化。   初始化和赋值对内置类型的成员没有什么大的区别, 像下面的任一个结构函数都可以。 对非内置类型成员变量, 为了防止两次结构, 推荐运用类结构函数初始化列表。 成员类型是没有默许结构函数的类。 若类没有默许结构函数, 则编译器尝试运用默许结构函数将会失败。 不能对他们赋值。   //结构函数初始化列表  //结构函数外部赋值  初始化数据成员与对数据成员赋值的含义是什么?有什么区别?  首先把数据成员按类型分类并分情况说明:  1. 援用)  在成员初始化列表和结构函数体内进行, 用户定义类型(类类型)  后果上相同, 也就是说在成员初始化列表处进行结构对象的任务, 调用结构函数, 在进入函数体之后, 进行的是对已经结构好的类对象的赋值, 又调用个拷贝赋值操作符才干完成(假设并未提供, 是按照声明的顺序初始化的, 然后做m_x=m_y, 最初它们有相同的值。 但是编译器先初始化m_x, 然后是m_y, 因为它们是按这样的顺序声明的。 后果是m_x将有一个不可预测的值。 一个是总是按照你希望它们被初始化的顺序声明成员, 假设你决议运用初始化列表, 总是按照它们声明的顺序罗列这些成员。

https://blog.sciencenet.cn/blog-559014-430053.html

上一篇:C++内存分配方式及常见错误
下一篇:JAVAJava中接口里定义的成员变量
收藏 IP: 117.21.220.*| 热度|

1 杨华磊

发表评论 评论 (0 个评论)

数据加载中...

Archiver|手机版|科学网 ( 京ICP备07017567号-12 )

GMT+8, 2024-5-20 00:27

Powered by ScienceNet.cn

Copyright © 2007- 中国科学报社

返回顶部