自助企业建站模板网络营销平台的主要功能
news/
2025/10/6 20:22:55/
文章来源:
自助企业建站模板,网络营销平台的主要功能,公司网站开发人员的的工资多少,成都建站培训构造函数初始化列表以一个冒号开始#xff0c;接着是以逗号分隔的数据成员列表#xff0c;每个数据成员后面跟一个放在括号中的初始化式。例如#xff1a;[cpp] view plaincopyclass CExample { public: int a; float b; //构造函数初始化列表 CExampl…构造函数初始化列表以一个冒号开始接着是以逗号分隔的数据成员列表每个数据成员后面跟一个放在括号中的初始化式。例如
[cpp] view plaincopyclass CExample { public: int a; float b; //构造函数初始化列表 CExample(): a(0),b(8.8) {} //构造函数内部赋值 CExample() { a0; b8.8; } }; 上面的例子中两个构造函数的结果是一样的。上面的构造函数使用初始化列表的构造函数显式的初始化类的成员
而没使用初始化列表的构造函数是对类的成员赋值并没有进行显式的初始化。
初始化和赋值对内置类型的成员没有什么大的区别像上面的任一个构造函数都可以。对非内置类型成员变量为了避免两次构造推荐使用类构造函数初始化列表。但有的时候必须用带有初始化列表的构造函数1.成员类型是没有默认构造函数的类。若没有提供显示初始化式则编译器隐式使用成员类型的默认构造函数若类没有默认构造函数则编译器尝试使用默认构造函数将会失败。
2.const成员或引用类型的成员。因为const对象或引用类型只能初始化不能对他们赋值。 或者改为static。
【常量必须在构造函数的初始化列表里面初始化 或 设置成static】
例子
class A
{const int size 0;//错误
}class A
{A(){ const int size 9; }
}或者
class A
{static const int size 9;
}
初始化列表的成员初始化顺序:C初始化类成员时是按照声明的顺序初始化的而不是按照出现在初始化列表中的顺序。跟初始化列表的顺序无关Example:
[cpp] view plaincopyclass CMyClass { CMyClass(int x, int y); int m_x; int m_y; }; CMyClass::CMyClass(int x, int y) : m_y(1), m_x(m_y) { } 你可能以为上面的代码将会首先做m_y1然后做m_xm_y最后它们有相同的值。
但是编译器先初始化m_x然后是m_y,因为它们是按这样的顺序声明的。结果是m_x将有一个不可预测的值。
有两种方法避免它一个是总是按照你希望它们被初始化的顺序声明成员第二个是如果你决定使用初始化列表总是按照它们声明的顺序罗列这些成员。这将有助于消除混淆。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/929668.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!