Составители:
Рубрика:
21
Для класса может быть объявлено несколько конструкторов, различаю-
щихся числом и типами параметров. При этом даже если для объектного типа
не определено ни одного конструктора, компилятор создает для него конст-
руктор по умолчанию, не использующий параметров, а также конструктор ко-
пирования, необходимый в том случае, если переменная объектного типа пе-
редается
в конструктор как аргумент. В этом случае создаваемый объект будет
точной копией аргумента конструктора.
//Листинг 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(); //ввод элементов массива с клавиатуры
…
}
Описание конструктора можно упростить, если компонентные данные при-
надлежат к базовым типам или являются объектными переменными, имеющими
Для класса может быть объявлено несколько конструкторов, различаю- щихся числом и типами параметров. При этом даже если для объектного типа не определено ни одного конструктора, компилятор создает для него конст- руктор по умолчанию, не использующий параметров, а также конструктор ко- пирования, необходимый в том случае, если переменная объектного типа пе- редается в конструктор как аргумент. В этом случае создаваемый объект будет точной копией аргумента конструктора. //Листинг 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
Страницы
- « первая
- ‹ предыдущая
- …
- 19
- 20
- 21
- 22
- 23
- …
- следующая ›
- последняя »