C嵌套构造函数初始化类成员

C嵌套构造函数初始化类成员,第1张

概述是否可以初始化这样的类? Quaternion::Quaternion(){ //default without arguments Quaternion(0.,V3(0.,0.,0.));}Quaternion::Quaternion(double s, V3 v){ //with scalar and vector as a argument coords[0] = s 是否可以初始化这样的类?

Quaternion::Quaternion(){ //default without arguments    Quaternion(0.,V3(0.,0.,0.));}Quaternion::Quaternion(double s,V3 v){ //with scalar and vector as a argument    coords[0] = s;    coords[1] = v[0];    coords[2] = v[1];    coords[3] = v[2];}

因为这是输出:

QUATERNION TEST(2.122e-313:-3.22469e-232:2.122e-313:-1.998) //instanciated with Quaternion q;(4:1:2:3) // instanciated with the Quaternion q(4,1,2,3);(4:-1:-2:-3) // conjugated of the one above

并且第一个没有初始化为0.因为它应该是……为什么?

解决方法 不在C 03中,但最近的C版本允许委托构造函数:

Quaternion() : Quaternion(0.0,V3(0.0,0.0,0.0)) { }

在委托构造函数中,初始化列表必须只有一个元素,这是另一个构造函数(显然不能有任何循环引用).

如果你想直接在构造函数中初始化你的类成员,那么在C-11之前你并没有真正解决复制/粘贴问题.也许您想使用默认参数?有些人反对那些……

explicit Quaternion(double s = 0.0,V3 v = V3(0.0,0.0)) { /* ... */ }
总结

以上是内存溢出为你收集整理的C嵌套构造函数初始化类成员全部内容,希望文章能够帮你解决C嵌套构造函数初始化类成员所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/1223250.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-05
下一篇 2022-06-05

发表评论

登录后才能评论

评论列表(0条)

保存