Зв'язування зі збереженням типів

У С++ усі імена функцій кодуються компілятором. Тому для використання С-функцій вони мають бути оголошені:

extern"C"

{//визначення чи прототипи С-функцій}

У цьому випадку компілятор не буде кодувати імена функцій на С, поміщені у фігурні дужки. Зручним є такий спосіб:

Extern C

{#include<stdio.h>}

Це приведе до того, що всі прототипи функцій у stdio.h не кодуватимуться. Програма С++ у цьому випадку може використовувати одне чи більше імен функцій зі <stdio.h> без недопустимого перевантаження.

Про структури та об'єднання

У С++ структури та об'єднання мають деякі нові властивості. На відміну від ANSI C, полями структур та об'єднань можуть бути функції. Крім того, структури та об'єднання мають інші властивості, аналогічні й для класів. У літературі інколи класи, структури та об'єднання навіть розглядають разом. Структури та класи відрізняються лише тим, що члени класу за умовчанням мають режим доступу private, а члени структури – public.у. Деякі відмінності мають об'єднання. В об'єднаннях не допускаються ключові слова private, public та protected. Об'єднання не можуть брати участь у механізмі успадкування. У С++ допускаються неіменовані об'єднання:

union{список членів};

Вони визначають об'єкт, а не тип. Імена членів такого об'єднання мають бути унікальними в межах області видимості. Члени використовуються безпосередньо, без операції доступу до них. Однак, оскільки вони є членами об'єднання, то для них виділяється одне й те саме місце, вони мають одну й ту саму адресу. Наприклад:

Main()

{union{long l;

unsigned char ch[4]};

cout<<"введіть число типу long:";

cin>>l;

cout<<"молодший байт"<<(int)ch[0]<<"\n";

cout<<"другий байт"<<(int)ch[1]<<"\n";

cout<<"третій байт"<<(int)ch[2]<<"\n";

cout<<"старший байт"<<(int)ch[3]<<"\n";

return 0;}

Функції-члени класу

Функції-члени в межах

І за межами формального опису класу

Пригадаємо, що тіло функції-члена може бути визначене як у межах формального опису класу, так і за його межами. У першому випадку компілятор розглядає функцію як inline -функцію. Можна явно визначати inline -функцiю за допомогою вiдповiдної директиви:

Class x

{int m;

public:

int readm(void);};


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: