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