default_constructor / copy_constructor / explicit构造函数

时间:2017-08-30 18:04:50

标签: c++ constructor

我有以下类和一些构造函数:

默认构造函数分配空字符串和0

复制构造函数将引用的字段复制到实例的字段

显式构造函数接受一个字符串和一个整数并将它们分配给字段

  1. 没有“//////”之间的行,输出就像
  2.   

    显式构造函数

         

    默认构造函数

    我的理解是:首先评估右侧。那是使用显式构造函数。然后它使用默认构造函数创建一个条目,并将使用显式构造函数构造的实例中的字段分配给由默认构造函数构造的实例。

    ppl [0] =人(“迈克”,20岁);

    1. 使用“////”之间的行,输出看起来像
    2.   

      显式构造函数

           

      默认构造函数

           

      显式构造函数

           

      复制构造函数

           

      复制构造函数

      前两个就像上面一样。 explcit + copy + copy怎么样? 我认为显式是针对Person(“jo”,10)。 如何解释两个拷贝构造函数?

          class Person{
          private:
          string name;
          int age;
          public:
          Person(){
            cout<<"default constructor"<<endl;
            name="";
            age = 0;
          }
          Person(const Person &other){
            cout<<"copy constructor"<<endl;
            name = other.name;
            age = other.age;
          }
          Person(string name, int age){
            cout<<"explicit constructor"<<endl;
            this->name = name;
            this->age = age;
          }
          };
      
          int main(){
      
          map<int, Person> ppl;
      
          ppl[0] = Person("Mike", 20);
          ////////////////////////////////////////////
          ppl.insert(make_pair(1, Person("jo", 10)));
          ////////////////////////////////////////////
          return 0;
          }
      

0 个答案:

没有答案