我理解C和Java非常好.
TransparentObject::TransparentObject( int w,int x,int y,int z ) : _someMethod( 0 ),_someOtherMethod( 0 ),_someOtherOtherMethod( 0 ),_someMethodX( 0 ) { int bla; int bla; }
到目前为止,我可以“推论”第一行只声明了这个名字,“::”听起来像我的“属于”.而{}之间的代码是自己的构造函数体.
我“认为”之后的功能和第一个“{”就像方法默认参数或某事,但我没有找到一个合理的解释在网上.我在实例中发现的大多数C构造函数与Java中的几乎相同.
我的假设是对的吗? “::”就像属于,而params和body之后的列表就像“default args”一样吗?
解决方法
class foo{ private: int x; int y; public: foo(int _x,int _y) : x(_x),y(_y) {} }
这将将x和y设置为在构造函数参数中的_x和_y中给出的值.这通常是构建声明为数据成员的任何对象的最佳方法.
class foo : public bar{ foo(int x,int y) : bar(x,y) {} };
在这种情况下,类的构造函数将调用其基类的构造函数并传递值x和y.
进一步剖析功能:
TransparentObject::TransparentObject( int w,int z ) : _someMethod( 0 ),_someMethodX( 0 ) { int bla; int bla; }
:: – 运算符称为范围解析运算符.它基本上只是表示TransparentObject是TransparentObject的成员.其次,您假设构造函数的正文发生在花括号中是正确的.
UPDATE: Thanks for the answers. May those be called methods? ( I guess no ) and what is the difference of call them within the constructor body
有更多关于这个问题的信息比我可能会给你here.你必须使用初始化器列表的最常见的区域是当您初始化引用或const时,因为这些变量必须在创建时立即被赋予一个值.
原文地址:https://www.jb51.cc/c/115821.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。