Министерство по развитию информационных технологий и коммуникаций республики узбекистан каршинский филиал ташкентского университета информационных технологий


Конструкторы — это функции этого компонента класса, которые используются для автоматической инициализации объектов


Download 126.89 Kb.
bet3/4
Sana26.01.2023
Hajmi126.89 Kb.
#1125505
1   2   3   4
Bog'liq
3 Indepent work

Конструкторы — это функции этого компонента класса, которые используются для автоматической инициализации объектов

Конструкторы могут выглядеть так:


Имя класса (список формальных параметров)
{ тело конструктора }
Имя функции этого компонента должно совпадать с именем класса.
Например, конструктор сложного класса можно ввести следующим образом:
complex (double re = 0.0; double im = 0.0 )
{real=re; imag=im;}

Для конструкторов не указаны возвращаемые типы, даже void. Конструктор вызывается автоматически при создании объекта, даже если он не указан программистом.


Например, объектный комплекс cc; если он определен в форме, конструктор вызывается автоматически
параметры real и imag автоматически будут иметь значения 0.0.
По умолчанию создаются конструктор без параметров и конструкторы копирования следующего типа: T::T (const T&)
Например
class F
{...
public : F(const T&)
...
}
У класса может быть несколько конструкторов, но только один из них должен иметь предопределенные значения параметров.
Адрес конструктора не может быть вычислен. Вы не можете использовать имя своего класса в качестве параметра конструктора, но можете использовать указатель на это имя.
Конструктор нельзя вызывать как функцию обычного компонента. Конструктор можно вызвать двумя способами:
class_name .object_name (constructor_actual_parameters)
имя_класса (конструктор_фактические_параметры)
При использовании первой формы список фактических параметров не должен быть пустым. Эта форма используется при определении нового объекта:
complex SS(10.3; 0.22)
// real=10.3; SS.imag= 0.22;
complex EE (2.3)
// EE . real= 2.3;
EE.imag= 0.0;
complex D() // xato
Вызов конструктора во второй форме приводит к созданию безымянного объекта. Этот анонимный объект можно использовать в выражениях.
Например :
complex ZZ= complex (4.0;5.0);
Bu ta’rif orkali ZZ ob’ekt yaratilib, unga nomsiz ob’ekt qiymatlari(real= 4.0; imag= 5.0) beriladi;
Имя конструктора должно совпадать с именем класса. Например, если вы используете класс служащих, конструктор также будет иметь имя служащий. Если конструктор определен в программе, он будет вызываться автоматически при создании объекта. Следующая программа включает класс с именем employee:

class employee


{
public:
employee(long, float);
void show_employee(void);
private:
long employee_id;
float salary;
};
Определение конструктора:
employee::employee(long empl_id, float sal)
{
employee_id = empl_id;
if (salary < 50000.0)
salary = sal;
else
salary = 0.0;
}
Программа, использующая этот класс:
#include
using namespace std;
class employee
{
public:
employee(long, float);
void show_employee(void);
private:
long employee_id;
float salary;
};
employee::employee(long empl_id, float sal)
{
employee_id = empl_id;
if (salary < 50000.0)
salary = sal;
else
salary = 0.0;
}
void employee::show_employee(void)
{
cout << "Nomer: " << employee_id << endl;
cout << "Maosh: " << salary << endl;
}
int main()
{
employee worker(101, 10101.0);
cout<<"ishchi"<worker.show_employee();
return 0;
}
Параметр может быть передан, когда объект определен с помощью конструктора: employee worker(101, 10101.0);
Если в программе есть объекты типа служащий, то каждый из них можно инициализировать следующим образом
employee worker(101, 10101.0);
employee secretary(57, 20000.0);
employee manager(1022, 30000.0);
Person work;
}
int kk;cin>>kk;
return 0;
}
Natija
Yaratidi
O'chirldi
Совместное использование элемента данных. Обычно при создании объектов заданного класса каждый объект получает свой набор элементов данных. Однако бывают и случаи, когда необходимо использовать один или несколько элементов данных (статических элементов данных) для объектов одного класса. В таких случаях элементы данных объявляются как общедоступные или частичные, а затем перед типом ставится ключевое слово static, как показано ниже:
private;
static int shared_value;
После объявления класса элемент должен быть объявлен как глобальная переменная вне класса. Это показано ниже:
int class_name::shared_value;
Следующая программа определяет класс book_series. Он использует один и тот же элемент page_count для всех объектов (книг) класса (серии). Если программа меняет значение этого элемента, это изменение немедленно отражается на всех объектах класса:
#include
using namespace std;
class book_series
{
public:
book_series(float);
void show_book(void);
void set_pages(int) ;
private:
static int page_count;
float price;
};
int book_series::page_count;
void book_series::set_pages(int pages)
{
page_count = pages;
}
book_series::book_series(float price)
{
book_series::price = price;
}
void book_series:: show_book (void)
{
cout << "Narx: " << price << endl;
cout << "Betlar: " << page_count << endl;
}
int main()
{
book_series programming(213.95);
book_series word(19.95);
word.set_pages(256);
programming.show_book ();
word.show_book() ;
cout << endl << "page_count ning o'zgarishi " << endl;
programming.set_pages(512);
programming.show_book();
word.show_book();
return 0;
}
Как видите, класс объявляет page_count как статическое целое число. После определения класса программа также объявляет page_count как глобальную переменную. Когда программа изменяет элемент page_count, это изменение немедленно отражается во всех объектах класса book_series.
Если объекты не существуют, используйте элементы с общедоступным статическим атрибутом. Когда вы объявляете элемент класса статическим, этот элемент используется всеми объектами этого класса. Однако возможны ситуации, когда программа еще не создала объект, но ей необходимо использовать элемент. Чтобы использовать элемент, приложение должно объявить его общедоступным и статическим. Например, в следующей программе используется элемент page_count класса book_series, несмотря на отсутствие объектов класса book_series:
#include
using namespace std;
class book_series
{
public:
static int page_count;
private:
float price;
};
int book_series::page_count;
int main()
{
book_series::page_count = 256;
cout << "page_count ning joriy qiymati " << book_series::page_count <<"ga teng"<return 0;
}
В этом случае, поскольку класс объявляет элемент класса page_count общедоступным, программа может ссылаться на этот элемент класса, даже если объекты класса book_series отсутствуют.
Использование статических функциональных элементов. Предыдущая программа продемонстрировала использование статических элементов данных. C++ позволяет точно так же определять статические элементы-функции (методы). Если создается экземпляр статического метода, программа может вызвать этот метод, даже если его объекты не были созданы. Например, если в классе есть метод, который можно использовать для данных вне класса, вы можете сделать этот метод статическим. Чтобы использовать функцию, программа должна объявить ее общедоступной и статической. Например, в следующей программе используется метод show_count() класса book_series, несмотря на отсутствие объектов класса book_series:
#include
using namespace std;
class book_series
{
public:
static int show_count() { return page_count;};
private:
float price;
static int page_count;
};
int book_series::page_count=256;
int main()
{
cout << "page_count ning joriy qiymati " << book_series::show_count() <<"ga teng"<< endl;

return 0;


}


Download 126.89 Kb.

Do'stlaringiz bilan baham:
1   2   3   4




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