Объектно-ориентированное программирование на языке С++. Лясин Д.Н - 21 стр.

UptoLike

Составители: 

21
Для класса может быть объявлено несколько конструкторов, различаю-
щихся числом и типами параметров. При этом даже если для объектного типа
не определено ни одного конструктора, компилятор создает для него конст-
руктор по умолчанию, не использующий параметров, а также конструктор ко-
пирования, необходимый в том случае, если переменная объектного типа пе-
редается
в конструктор как аргумент. В этом случае создаваемый объект будет
точной копией аргумента конструктора.
//Листинг 6. Конструкторы по умолчанию
struct MyClass
{//конструкторы по-умолчанию (создаются компилятором)
MyClass() // без параметров
{…}
MyClass(MyClass &copy) //конструктор копирования
{…}
};
main()
{
MyClass m; //вызов конструктора без параметров
MyClass m1(m);//вызов конструктора копирования
}
Для класса array вместо метода InitMas необходимо определить конст-
руктор, который выделял бы динамически память под массив.
//Листинг 7. Переопределение класса «массив целых чисел» с использованием
//конструктора
struct array
{ …
array(int k)
{if(k>0)
{ n=k;
mas=new int[n];
}
}
};
main()
{ array m(5); //вызов конструктора. Память выделяется под 5 элементов массива
m.ReadMas(); //ввод элементов массива с клавиатуры
}
Описание конструктора можно упростить, если компонентные данные при-
надлежат к базовым типам или являются объектными переменными, имеющими
    Для класса может быть объявлено несколько конструкторов, различаю-
щихся числом и типами параметров. При этом даже если для объектного типа
не определено ни одного конструктора, компилятор создает для него конст-
руктор по умолчанию, не использующий параметров, а также конструктор ко-
пирования, необходимый в том случае, если переменная объектного типа пе-
редается в конструктор как аргумент. В этом случае создаваемый объект будет
точной копией аргумента конструктора.
    //Листинг 6. Конструкторы по умолчанию
    struct MyClass
    {//конструкторы по-умолчанию (создаются компилятором)
      MyClass() // без параметров
       {…}
    MyClass(MyClass ©) //конструктор копирования
    {…}
    };
    main()
    {
    MyClass m; //вызов конструктора без параметров
    MyClass m1(m);//вызов конструктора копирования
    }
    Для класса array вместо метода InitMas необходимо определить конст-
руктор, который выделял бы динамически память под массив.
     //Листинг 7. Переопределение класса «массив целых чисел» с использованием
     //конструктора
     struct array
     {…
             array(int k)
          {if(k>0)
           { n=k;
              mas=new int[n];
            }
          }
       …
     };
      main()
      { array m(5); //вызов конструктора. Память выделяется под 5 элементов массива
        m.ReadMas(); //ввод элементов массива с клавиатуры
         …
       }
    Описание конструктора можно упростить, если компонентные данные при-
надлежат к базовым типам или являются объектными переменными, имеющими

                                            21