我觉得题中的代码不大可能出现图中的报错。更有可能是你之后将第二个构造函数的形参都赋予了默认值而导致发生二义性。建议你贴上IDE中现有的所有代码。另外,你的char数组book和类名重名了,会导致类名被覆盖。
可以,C++的构造函数作用是给你在创建一个对象后对其进行初始化。当一个对象关联着另外一个对象时(例如一个人有一本书),你就可以在初始化一个对象的时候创建它的关联对象。