调用没有'new'的成员变量的构造函数

tzi*_*ppy -1 c++ constructor

我想在m_fooClass A的构造函数中调用Class 成员的构造函数A.用它来调用它是不是很麻烦m_foo = new Foo()?或者我可以在没有把它放在堆上的情况下调用它吗?我想传递一个256字节数组的指针,以便Foo对象用指针指向的数据填充其成员数组.但是,我如何调用我在头文件中声明的成员变量的构造函数?

A.hpp

class A{ 

 public
 A();

 private:
 Foo m_foo;

};
Run Code Online (Sandbox Code Playgroud)

A.cpp

 A::A()
{
 //How to call constructor of class Foo here?


}
Run Code Online (Sandbox Code Playgroud)

Foo.hpp

class Foo()
{
 Foo(char* p)
 {
  memcpy(m_Array, p, sizeof(m_Array)/sizeof(m_Array[0]));
 }
  private:
 char m_Array[256];
};
Run Code Online (Sandbox Code Playgroud)

qua*_*dev 6

使用A构造函数的成员初始化列表:

 A::A() : m_foo(...)
 {


 }
Run Code Online (Sandbox Code Playgroud)

您可以从以下内容获得char*所需的构建m_foo:

A 构造函数:

A::A(char* p) : m_foo(p) {}
Run Code Online (Sandbox Code Playgroud)

或另一个功能:

A::A() : m_foo(GetBuffer()) {}
Run Code Online (Sandbox Code Playgroud)

  • @ATaylor你从哪个书中学到的东西没有涵盖这个?我不认为它存在于TC++ PL 1(1985)中,但肯定是TC++ PL 2(1991) (7认同)