class A { public: A(){d=2.2;cout<<d;} A(double d):d(d){cout<<d;} double getD(){return d;} private: double d;};class Bing { public: Bing(){a=A(5.3);} voID f(){cout<<a.getD();} private: A a;};int main() { Bing b; b.f();}
我得到输出:2.2 5.3 5.3而不是5.3 5.3.它是构造函数中的东西….为什么我得到这个?我该怎么办呢?
解决方法 你的类A有两个构造函数:一个默认构造函数,它将d设置为2.2,一个构造函数采用double,它将d设置为传递给构造函数的任何东西.您的班级Bing中有一个类型为A的成员变量.在输入Bing构造函数的主体之前初始化此成员变量.由于未在构造函数的初始化列表中列出Bing成员,因此将调用其默认构造函数.您可以通过在初始化列表中初始化它来使用所需的值显式初始化它:
Bing() : a(5.3) { }总结
以上是内存溢出为你收集整理的c构造函数全部内容,希望文章能够帮你解决c构造函数所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)