c++ - 复制构造函数调用另一个类的复制构造函数

标签 c++ templates constructor

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

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();
};

谢谢:)

最佳答案

如果我理解这个问题,我认为您在寻找 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

}

关于c++ - 复制构造函数调用另一个类的复制构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34423742/

相关文章:

C++: ifstream::getline 问题

采用 STL 样式迭代器的 C++ 虚方法

c++ - C++ 中的继承和模板

c++ - 模板推导中的const T&和T&有什么区别

c++ - "No appropriate default constructor available"--为什么还要调用默认构造函数?

c++ - 带柯南的 Cmakelists

c++ - 为什么这个 Pascal Triangle 实现给我尾随零?

wpf - IsPressed 触发器(按钮)导致异常

java - Android clazz.getConstructors() 返回错误数量的构造函数,仅在实时应用程序中

c# - 在 C# 中的构造函数上填充列表