На языке программирование с#. 3 Конструкторы



Download 291,49 Kb.
bet5/8
Sana25.02.2022
Hajmi291,49 Kb.
#294636
TuriРеферат
1   2   3   4   5   6   7   8
Bog'liq
уткирбекники


СТАТИЧЕСКИЙ КОНСТРУКТОР



Конструктор можно также объявить как static. Статический конструктор, как правило, используется для инициализации компонентов, применяемых ко всему классу, а не к отдельному экземпляру объекта этого класса. Поэтому члены класса инициализируются статическим конструктором до создания каких-либо объектов этого класса:
using System;
namespace Конструктор
{
class StatClass
{
public static int q;
public int p;
// Статический конструктор
static StatClass()
{
q = 33;
}
// Обычный конструктор
public StatClass()
{
p = 44;
}
}
class Program
{
static void Main(string[] args)
{
StatClass ob = new StatClass();
Console.WriteLine("Доступ к полю p экземпляра: " + ob.p);
Console.WriteLine("Доступ к полю q: " + StatClass.q);
Console.ReadLine();
}
}
}
Важно, что конструктор типа static вызывается автоматически, причем до конструктора экземпляра. Из этого следует, что статический конструктор должен выполняться до любого конструктора экземпляра. У статических конструкторов отсутствуют модификаторы доступа — они пользуются доступом по умолчанию, а следовательно, их нельзя вызывать из программы.

Конструкторы классов.


После того как класс определен и заданы объекты этого класса, как правило, возникает необходимость выполнения каких-либо действий по инициализации каждого из объектов. Под инициализацией в данном случае понимается выполнение некоторых начальных действий в программе, для того, чтобы объект мог успешно функционировать. При этом для разных классов могут понадобиться существенно различные способы инициализации. Такими действиями могут быть, например, открытие файлов, загрузка драйверов, динамический заказ дополнительной оперативной памяти, присвоение начальных значений элементам данных. Для выполнения действий такого рода можно было бы воспользоваться какой-либо специально определенной программистом функцией-членом класса, например InitObject или SetObject. Вместе с тем, это налагает на программиста дополнительные обязанности, например, записывать вызов этих функций для каждого вновь определяемого объекта. Преодолеть это неудобство в С++ довольно просто, используя конструкторы классов. Для некоторого класса конструктор - это функция, являющаяся его членом и имеющая имя, совпадающее с именем самого класса, а также не содержащая типа возвращаемого значения. Особенностью функции является ее автоматический вызов для каждого из объектов класса в тот момент, когда по естественному ходу выполнения программы встречается описание объекта:


class Vectors{A[25], B[25], C[25];:( );VectorsSum ( Vectors *, Vectors * );


// Другие методы
};::Vectors( )
{( A, 0, 25);( B, 0, 25);( C, 0, 25);
}
void main( )
{
Vectors First; // В этом месте будут вызваны
Vectors Second; // конструкторы для First и Second.
// Операторы программы
}

Конструктор представляет собой специальную функцию, которую C++ автоматически вызывает каждый раз при создании объекта. Обычное назначение конструктора заключается в инициализации элементов данных объекта. Конструктор имеет такое же имя, как и класс. Класс с именем file использует конструктор с именем file. Вы определяете конструктор внутри своей программы так же, как и любой метод класса. Единственное различие заключается в том, что конструктор не имеет возвращаемого значения. Когда вы позже объявляете объект, вы можете передавать параметры конструктору. Одним из важных свойств конструктора является его автоматический вызов при описании любого объекта какого-либо класса, использующего конструктор, что снимает с программиста задачу своевременного отслеживания инициализации вновь вводимых объектов. В общем случае конструкторы классов могут иметь списки пара- метров, которые могут потребоваться при инициализации. При этом программист будет обязан задать список инициализации при описании каждого нового объекта, например, рассмотрим класс дат с соответствующим конструктором:


class Date{Month, Day, Year;:(int , int, int);GetDate( );
};::Date ( int M, int D, int Y )
{= M; Day = D; Year = Y;
}
void main( )
{MemDay( 10, 15, 1993 ); // Обязательная инициали-
Date NewDate = MemDay; // зация, иначе :Another; // Ошибка !
// Операторы программы
}

Ограничением использования конструкторов является запрет использования его имени в качестве явного аргумента внутри самого этого класса:


class Vector{Vec[5];V; // Ошибка:( Vector ); // Ошибка


// Другие методы
};
В данном случае определение объекта V как объекта этого же класса Vector должно было привести к бесконечному рекурсивному выделению памяти, однако транслятор с языка С++ просто выдаст соответствующее сообщение о синтаксической ошибке. C++ позволяет указывать значения по умолчанию для параметров функции. Если пользователь не указывает каких-либо параметров, функция будет использовать значения по умолчанию. Конструктор не является исключением; ваша программа может указать для него значения по умолчанию так же, как и для любой другой функции. Например, следующий конструктор employee использует по умолчанию значение оклада равным 10000.0, если программа не указывает оклад при создании объекта. Однако программа должна указать имя служащего и его номер. Конструкторы, не имеющие параметров, называются конструкторами по умолчанию:

#include "iostream.h" // для cin, cout см.следующие главы


class X{:*PointX;
X ( ) { cout << "Объявлен объект класса X!";
PointX = (char* 0);
}; // X( ) - конструктор по умолчанию
};NewX;main( )
{<< "Конец работы.";
}

Результатом работы этой программы будет:


Объявлен объект класса Х!
Конец работы.
Как и другие методы класса конструкторы могут быть перегружаемыми, т.е. могут использовать несколько определений с различными списками параметров:
Intg {Number[5];// Число можно хранить символьноN;// И целым типом:( char *Str ) {// Конструктор для 1-го случая( strlen(Str) > 5 )<< "Превышение размера числа";strcpy( Number, Str );
};( int L ) { N = L }; // Конструктор для второго случая
};main( )
{First ( "125" ); // Вызов первого конструктораSecond ( 125 ); // Вызов второго конструктора
// Другие операторы программы
}

Download 291,49 Kb.

Do'stlaringiz bilan baham:
1   2   3   4   5   6   7   8




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©hozir.org 2024
ma'muriyatiga murojaat qiling

kiriting | ro'yxatdan o'tish
    Bosh sahifa
юртда тантана
Боғда битган
Бугун юртда
Эшитганлар жилманглар
Эшитмадим деманглар
битган бодомлар
Yangiariq tumani
qitish marakazi
Raqamli texnologiyalar
ilishida muhokamadan
tasdiqqa tavsiya
tavsiya etilgan
iqtisodiyot kafedrasi
steiermarkischen landesregierung
asarlaringizni yuboring
o'zingizning asarlaringizni
Iltimos faqat
faqat o'zingizning
steierm rkischen
landesregierung fachabteilung
rkischen landesregierung
hamshira loyihasi
loyihasi mavsum
faolyatining oqibatlari
asosiy adabiyotlar
fakulteti ahborot
ahborot havfsizligi
havfsizligi kafedrasi
fanidan bo’yicha
fakulteti iqtisodiyot
boshqaruv fakulteti
chiqarishda boshqaruv
ishlab chiqarishda
iqtisodiyot fakultet
multiservis tarmoqlari
fanidan asosiy
Uzbek fanidan
mavzulari potok
asosidagi multiservis
'aliyyil a'ziym
billahil 'aliyyil
illaa billahil
quvvata illaa
falah' deganida
Kompyuter savodxonligi
bo’yicha mustaqil
'alal falah'
Hayya 'alal
'alas soloh
Hayya 'alas
mavsum boyicha


yuklab olish