c构造函数

c构造函数,第1张

概述我写了这段代码: 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( 我写了这段代码:

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构造函数所遇到的程序开发问题。

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

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

原文地址: http://outofmemory.cn/langs/1222602.html

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

发表评论

登录后才能评论

评论列表(0条)

保存