为什么没有调用构造函数?

时间:2017-10-02 06:23:20

标签: c++ c++11 parameterized-constructor

在下面的代码中,我有两个参数化构造函数。我编译并运行 Gcc 编译器,但未调用构造函数。

#include <iostream>

class A 
{
  public:
  A(int i) 
  { 
      std::cout << "A constructed" << std::endl; 
  }
};

class B 
{
  public:
  B(A a1) 
  { 
      std::cout << "B constructed" << std::endl; 
  }
};

int main() 
{
  int i = 5;
  B b1(A(i));
  std::cout << i << std::endl;
  return 0;
}

输出:

5

那么,为什么没有调用构造函数?

1 个答案:

答案 0 :(得分:-3)

您的两个构造函数都是在private下定义的。私有构造函数对象不可见,因此无法调用。