【问题标题】:constructor as default argument构造函数作为默认参数
【发布时间】:2009-11-27 10:04:41
【问题描述】:

假设我有 2 个班级

class B
{
   B() { /* BLA BLA */ };
   B(int a) { /* BLA BLA */ };
   B(int a,int b) { /* BLA BLA */ };
}

class A {
public :
  A(B  par);
}

我想知道如何使用具有默认参数的 par 调用 A 的构造函数,作为每个 B 构造函数。 (当然我想看 3 个例子,我不希望它们都一起存在)

谢谢

【问题讨论】:

    标签: c++ class


    【解决方案1】:

    你可以这样做:

    A(B par = B())
    A(B par = B(1))
    A(B par = B(1,2))
    

    根据评论的完整代码:

    class B
    {
    public:
       B() {  };
       B(int a) {};
       B(int a,int b) {};
    };
    
    class A {
    public :
      A(B  par = B()/* or B(1) or B(1,2) */);
    
    };
    

    【讨论】:

    • 好奇投反对票的原因..答案有问题吗?
    • 你的意思是创建par 作为B 的对象并将其传递给A,那么它对我不起作用,尽管我不是反对者。
    • no.. 它们是 A 的构造函数的定义,参数 B 的默认值,我认为 OP 想知道如何为包含参数化构造函数的用户定义类型指定默认参数..
    • @Naveen 谢谢,你可以拥有其中一个构造函数,对吗?
    • 是的..这也是OP在帖子中提到的
    【解决方案2】:
    A(B());//create a B object and pass it to A
    A(B(1));
    A(B(1,2));
    

    或为 A 定义 3 个不同的构造函数(但这对我来说听起来不太好)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-07-09
      • 1970-01-01
      • 1970-01-01
      • 2016-06-05
      • 2010-12-10
      • 1970-01-01
      • 2012-06-30
      相关资源
      最近更新 更多