1

在下面的代码中,我有两个参数化构造函数。我已经编译并运行到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

那么,为什么不调用构造函数呢?

4

1 回答 1

-3

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

于 2017-10-02T06:29:13.227 回答