如何实例化C++类中的对象?

dot*_*uad 1 c++ instantiation

对于C++学习的目的,我有文件class1.h,class1.cpp,class2.hclass2.cpp.我想实例化一个名为class1Objinside 的对象class2.我在哪里以及如何实例化此对象?我classObjclass2构造函数中实例化吗?

在过去,我已经创建了一个指向类的指针,该指针在那个时候运行良好,但我认为指针不是我这次应该采用的路径,因为它classObj只会在内部使用class2.

Arm*_*yan 7

class class1
{
   //...
};

class class2
{
   class1 member; 
   //...
};
Run Code Online (Sandbox Code Playgroud)

在class2 ctor中,您可以member在构造函数初始化列表中初始化.

class2::class2(...)
: member(...)
{
   //...
}
Run Code Online (Sandbox Code Playgroud)


Jos*_*eld 6

那么你过去是如何创建一个指针的?据推测,你做了这样的事情:

class class2
{
  public:
    class2()
    {
      class1Pointer = new class1();
    }
    // Destructor, copy constructor/assignment, etc...
  private:
    class1* class1Pointer;
};
Run Code Online (Sandbox Code Playgroud)

现在你想做完全一样的事情,但这次你不想要一个指向 的指针class1,你想要一个class1本身:

class class2
{
  public:
    class2() {}
    // Destructor, copy constructor/assignment, etc...
  private:
    class1 class1Obj;
};
Run Code Online (Sandbox Code Playgroud)

class2创建对象时,对象将被默认初始化。如果您的 class1 构造函数应该接受一些参数,请使用初始化列表:

class class2
{
  public:
    class2() : class1Obj(1, 2, 3) {}
    // Destructor, copy constructor/assignment, etc...
  private:
    class1 class1Obj;
};
Run Code Online (Sandbox Code Playgroud)