Тема: Специфікатори С++
Перечитую колись незрозумілі розділи з книги " 4 видання по С++ Г.Штлдт". Дойшов до специфікаторів але знову мало що зрозумів. Можете пояснити її мені. Або кинути силку на статтю яку і баран зрозуміє.
Ви не увійшли. Будь ласка, увійдіть або зареєструйтесь.
Ласкаво просимо вас на україномовний форум з програмування, веб-дизайну, SEO та всього пов'язаного з інтернетом та комп'ютерами.
Будемо вдячні, якщо ви поділитись посиланням на Replace.org.ua на інших ресурсах.
Для того щоб створювати теми та надсилати повідомлення вам потрібно Зареєструватись.
Український форум програмістів → C++ → Специфікатори С++
Сторінки 1
Для відправлення відповіді ви повинні увійти або зареєструватися
Перечитую колись незрозумілі розділи з книги " 4 видання по С++ Г.Штлдт". Дойшов до специфікаторів але знову мало що зрозумів. Можете пояснити її мені. Або кинути силку на статтю яку і баран зрозуміє.
Вкажіть які саме службові слова плюсів Ви не розумієте...
Не зрозумів такі специфікатори як:
1) extern
2) static
3) register
4) auto
Є ще mutable але я про нього взагалі ще нічого не читав
Це вказування класу пам'яті.
http://www.google.com.ua/url?sa=t&r … upJG3YJXig
extern можна використовувати для використання змінних і функцій, що описані в одному .cpp файлі - в інших.
static функції використовують у класах. статичну функцію можна викликати без вказування конкретного екземпляра класу "QMyClass::mystaticFunc("значення параметру")"
static змінна у тілі функції ініціалізується лише один раз і значення зберігається для наступного виклику
int func() {
static int a = 0;
...
а++;
}
При першому виклику значення "а" буде 0, при другому 1 і т.д.
auto і register це вказівки для компілятора де зберігати змінну - регістр процесора чи оперативна пам'ять.
Ще не зустрічав їх на практиці. компілятору краще знати, як збільшити швидкість роботи програми.
Ще не зустрічав їх на практиці. компілятору краще знати, як збільшити швидкість роботи програми.
Насправді компілятори в цьому плані досить дурні, хоча і дуже просунулися за останнє десятиріччя в плані кодогенерації. Ці особливості мови рідковживані, бо по-перше іноді леше на асмі написати, а по-друге використані директиви для однієї архітектури не завжди будуть прийнятні для іншої архітектури.
Уточнення по static: поза класом він обмежує область видимості функції чи змінної поточним файлом.
+ якщо змінити значення статичного поля класу для одного його екземпляра (об'єкта)- то для всіх інших воно теж зміниться
register - да зараз часто ігнорується, бо є лише 4ри регістри загального призначення ЕАХ, ЕВХ, ЕСХ, ЕDX. Інші краще не чіпати, в наш час, багато функцій вносяться більше ніж чотири параметри, а іноді регістри виконуються як доможні дані при маніпуляції даними, тому компілятор береже регістри, кидає ці дані встек, також все залежить з яким флагом оптимізації зібрати програму.
Автору раджу не вчити С++, а почати зчистого С, це дві великі різниці, книга Д.РІчі, та іншікниги по "С"
register - да зараз часто ігнорується, бо є лише 4ри регістри загального призначення ЕАХ, ЕВХ, ЕСХ, ЕDX.
"Зараз" - це коли, в 90-і? Зараз вже AMD-64/Intel-64/x86-64 використовується, з 8 додатковими регістрами.
Ну і C/C++ не обмежується інтелівськими архітектурами.
зараз - це в наш час
х64 як такої архітектури немає, насправдіце ЕМ64Т, яку інтел розробляє від AMD в своїх процах, післятого як лоханулися з IA-64
ARM теж не солодко з цим, як начнеться, там що регістри в режимах працють, а інші ні, то краще їх помістити в стек і не морочити собі голову. В ARM не всі процессори мають 31-32-33 регістра, є такі що 15. До 33 регістрів мають процессори серії А, інші зазвичай 15, але там хто як хоче, так і дроче з тими процами по конструкції.
Скажіть це Microsoft
те що так маркує свої образи Microsoft не означає що щось там нове. Обзази хоть gentoo, хоть *BSD ідуть часто i386, AMD64, (іменувати можнахоть x32, x64) остання заведеться на нових процессорах, якщо сумісний режим є, а з IA-64 Intel круто лоханулись.
те що так маркує свої образи Microsoft не означає що щось там нове.
Я кажу про синонімічний ряд, який позначає одну архітектуру, а не про щось нове. Звичайно, плутанина страшна, але не могла ж Intel назвати архітектуру AMD64
Звичайно, плутанина страшна, але не могла ж Intel назвати архітектуру AMD64
так, знайомий випадок, колив сервіс центр принесли комп, мол віндовс не ставиться, а виявилось що вони скачали образ віндовса для IA-64.
Сторінки 1
Для відправлення відповіді ви повинні увійти або зареєструватися