У С++ усі імена функцій кодуються компілятором. Тому для використання С-функцій вони мають бути оголошені:
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);};