Base Copy constructor not called

前端 未结 6 1984
悲&欢浪女
悲&欢浪女 2021-02-10 07:44
class Base
{
      public:
      int i;

      Base()
      {
          cout<<\"Base Constructor\"<

        
6条回答
  •  挽巷
    挽巷 (楼主)
    2021-02-10 08:19

    If you want to read actual rule you should refer to C++ Standard 12.8/8:

    The implicitly-defined copy constructor for class X performs a memberwise copy of its subobjects. The order of copying is the same as the order of initialization of bases and members in a user-defined construc- tor (see 12.6.2). Each subobject is copied in the manner appropriate to its type:

    • if the subobject is of class type, the copy constructor for the class is used;
    • if the subobject is an array, each element is copied, in the manner appropriate to the element type;
    • if the subobject is of scalar type, the built-in assignment operator is used.

    When you define copy constructor explicitly you should call copy c-tor of base class explicitly.

提交回复
热议问题