我想知道,如果我这样做,如何在类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();
};
谢谢:)
答案 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
}