оperator имя_нового_типа ( )
{
: : : :
}
Вызов: имя_нового_типа (имя_объекта_класса);
Операторы приведения подчиняются следующим правилам:
1. Не имеют формальных аргументов; Считается по умолчанию, что это имя объекта данного класса.
2. Нет явного описания типа возвращаемого результата. Считается, что тип результата тот, к которому приводит оператор приведения.
3. Может описываться как virtual.
4. Наследуется.
Пример.
#include <stdio.h>
class A
{
int k;
char * str;
public:
A (int a, char * s)
{
k = a
str = s;
}
operator int ()
{
return k;
}
};
void main ( )
{
A q (12, "Coretta");
printf("Целая часть для q = % i \ n ", int (q);
}
В описании класса А определена функция-элемент этого классаoperator int ( ). Она преобразует объект q класса А в переменную типа int. Этопроисходит в результате вызова операции приведения int (q). Подобным образом можно преобразовать объект класса А в переменную (объект) типа char.
Язык С++ разрешает использовать в качествеаргументов объекты одного класса другому классу или функции, которая не является членом этого класса. Для этого используется ключевое слово friend.
Можно разрешить обычной функции или функции - элементу другого класса пользоваться объектами класса , который объявил эту функцию дружественнойс помощью описания friendпри определении класса. То есть при определении классаприводится прототипдружественной функции, перед которым стоит слово friend. Ниже приводится пример дружественной функции kuma( man &), у которой в качестве аргумента является ссылка на класс man. Класс man объявил функцию kuma( ) дружественной для себя.
#include <stdio.h>
class man
{
char name [2 0 ];
char adres [25];
public:
friend void kuma (man& x);
void get_info ( );
void put_info ( );
};
void man :: get_info ( )
{
puts(" Введите имя ");
fflush (stdin);
scanf ("%s", &name);
puts(" Введите адрес ");
fflush (stdin);
scanf ("%s", &adres);
}
void man :: put_info ( )
{
printf (" Имя % s,адрес % s \n", name, adres);
}
void main ( )
{
man V;
V.get_info ( );
V.put_info ( );
kuma (V);
}
void kuma (man& x)
{
printf(" Я кума у % s . Его адрес %s \n", х. name ,х. adres );
}
При определении класса можно объявить другой класс в качестве друга. Такое объявление выглядит так:
friendclass имя_дружественного_класса ;
При этом слово class можно не писать.
Благодаря этому объявлению функции-члены дружественного класса могут использовать в качестве аргумента объекты того класса, который объявил его другом.
В приведенном ниже примере в классе man объявлен в качестве дружественного класс kum.
Функция-элемент kum() класса kum использует объект класса man .
#include <stdio.h>
class man
{
char name [ 10 ];
public:
friend class kum; // class можно не писать
void get_info _ man (char* nm)
{
printf(" Введите имя для % s\ n ",nm );
fflush (stdin);
scanf ("%s", &name);
}
};
class kum
{
char name_children [15];
public:
void get_kum_info ( );
{
puts(" Введите имя ребенка") ;
fflush (stdin);
scanf ("%s", &name_children);
}
void kuma (man& x)
{
printf(" У меня есть кум % s\ n ",х. name );
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.