【问题标题】:Invoking overload constructor within constructor在构造函数中调用重载构造函数
【发布时间】:2015-06-10 13:10:07
【问题描述】:

我想知道在 C++ 中是否可以在另一个构造函数中运行构造函数重载。我知道使用常规方法是可能的。我想做什么:

class Foo
{
public:
     Foo();
     Foo(int val);
}; 

Foo::Foo()
{
     Foo(1);
}

Foo:Foo(int val)
{
     std::cout << val;
}

这不适合我。我正在尝试创建 2 个构造函数,一个女巫接受参数,一个将其设置为默认值(无效的)。我会获得所有帮助。

【问题讨论】:

    标签: c++ constructor operator-overloading


    【解决方案1】:
    class Foo
    {
    public:
         Foo();
         Foo(int val);
    }; 
    
    Foo::Foo() : Foo(1)
    {
    }
    
    Foo:Foo(int val)
    {
         std::cout << val;
    }
    

    【讨论】:

      【解决方案2】:

      这叫做构造函数委托

      class Foo
      {
      public:
           Foo();
           Foo(int val);
      }; 
      
      Foo::Foo() : Foo(1)
      {
      }
      
      Foo:Foo(int val)
      {
           std::cout << val;
      }
      

      在这种情况下,您也可以使用默认参数:

      class Foo
      {
      public:
           Foo(int val = 1);
      }; 
      
      Foo:Foo(int val /* = 1 */)
      {
           std::cout << val;
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-05-23
        • 2018-01-31
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-09-25
        相关资源
        最近更新 更多