复制构造函数调用另一个类

时间:2015-12-22 20:12:04

标签: c++ templates constructor

我想知道,如果我这样做,如何在类A的复制构造函数中调用模板类B的复制构造函数,则这两个类不在同一个文件中。

template<typename T> class A: public AP<T>
{
    public:
        A();
        A(const A&);
        ~A();
};



#include "A"
class B: public BP
{
    private:
       A<int> Amember;
    public:
        B();
        B(const B&);
        ~B();
};

谢谢:)

1 个答案:

答案 0 :(得分:0)

如果我理解了这个问题,我认为你是在B类构造函数中的可选初始化列表之后。如果要调用默认构造函数或复制构造函数,则无关紧要。在构造函数的定义中,您可以放置​​一个冒号以及如何初始化每个成员变量的列表。即,应该调用哪个构造函数。

#include <iostream>

using namespace std;

class A{
  public:
   A(){cout<<__PRETTY_FUNCTION__<<endl;}
   A(int i){cout<<__PRETTY_FUNCTION__<<" "<<i<<endl; data = i;}
   A(const A& a){cout<<__PRETTY_FUNCTION__<<endl; data = a.data;}
  private:
   int data;
};

class B{
  public:
   B() : a(){}
   B(int i) : a(i){}
   B(const B& b) : a(b.a) {}
  private:
   A a;
};

int main(){
  B b1; // default constructor

  B b2(5); // integer constructor

  B b3(b2); // copy constructor

}