如何在不同的类中初始化对象?

时间:2015-04-09 21:10:36

标签: c++

我正在学习c ++,而且我对基础知识有疑问。 如何在不同的类中初始化对象?

例如我有代码:

class A {

  private:
     static int num;
     static string val;

  public:
    A(int n, string w) {        
       num = n;
       val = w;
   }
};

我想在B类中创建对象A,所以我尝试这样:

class B {
   private:
      A objA;
   public:
      B(int numA, string valA){
         objA = new A(numA, valA);
   }
};

不同的方式(相同的构造函数):

 public:
      B(A obA){
        objA = obA;
      }

 public:
      B(int numA, string valA){
         objA = A(numA, valA);
      }

总是我收到错误:没有默认构造函数存在于类" A"。我已经读过默认构造函数是没有任何参数的构造函数,但是我给它们,为什么它是默认搜索?

2 个答案:

答案 0 :(得分:2)

如果你想学习C ++ ...忘记java。 C ++变量是值,而不是引用伪装中的指针。

objA = new something令人憎恶,因为objAA而不是A*

您需要的是使用适当的参数

显式构造objA
class B {
   private:
      A objA;
   public:
      B(int numA, string valA) 
          :objA(numA, valA) 
      {
      }
   }
};

有关详情,请参阅http://en.cppreference.com/w/cpp/language/initializer_list

答案 1 :(得分:1)

您可以通过以下方式执行此操作

class B {
   private:
      A objA;
   public:
      B(int numA, string valA) : objA( numA, valA ) {}
};