У програмі C ++ такі функції, як винятки, впливають на всю вашу програму: ви можете їх відключити у всій програмі , або вам потрібно працювати з ними протягом усього коду. Як відомо у статті про Звіт про С ++ :
Протиінтуїтивно, важкою частиною винятків кодування є не явні кидки та уловлювання. Справді складною частиною використання винятків є написання всього втручається коду таким чином, щоб довільний виняток міг поширюватися зі свого сайту викидання до його обробника, прибуваючи безпечно і не пошкоджуючи інші частини програми по дорозі.
Оскільки навіть newвикиди винятків, кожна функція повинна забезпечувати основну безпеку винятків - якщо тільки вона не викликає функції, які гарантують викидання не виняток - якщо ви не відключаєте винятки взагалі у всьому своєму проекті .
Отже, винятки - це "ціла програма" або "ціла команда", оскільки їх повинні розуміти всі в команді, яка їх використовує. Але не всі функції C ++ є такими, наскільки я знаю.
Можливим прикладом є те, що якщо я не отримаю шаблони, але я не користуюся ними, я все одно зможу написати правильний C ++ - чи не буду ?. Я навіть можу зателефонувати sortна масив цілих чисел і насолоджуватися його дивовижною перевагою швидкості wrt. C qsort(тому, що не викликається функція покажчика), не ризикуючи помилками - чи ні? Здається, шаблони - це не «ціла команда».
Чи є інші функції C ++, які впливають на код, не використовуючи їх безпосередньо, і, отже, є "цілою командою"? Мене особливо цікавлять функції, яких немає у C.
Оновлення : Я особливо шукаю функції, де немає ознак, встановлених мовою, про які вам потрібно знати. Перша відповідь, яку я згадав про коректність, яка також є цілою командою, тому всі повинні дізнатися про це; однак, AFAICS це вплине на вас лише в тому випадку, якщо ви викликаєте функцію, яка позначена const, і компілятор не дозволить вам викликати її по об'єктах, які не мають const, тому ви отримаєте щось для google. За винятком, ви навіть цього не розумієте; крім того, вони завжди використовуються, як тільки ви використовуєте new, отже, винятки є "підступнішими". Оскільки я не можу охарактеризувати це як об'єктивно, я буду вдячний за будь-яку особливість команди.
Оновлення 2 : замість функції C ++ я повинен був написати щось на кшталт "C ++ - специфічна функція", щоб виключити такі речі, як багатопотокова редакція, які застосовуються до великої кількості основних програмних мов.
Додаток: Чому це питання об'єктивне (якщо вам цікаво)
C ++ - це складна мова, тому багато проектів чи посібники з кодування намагаються вибрати "прості" функції C ++, і багато людей намагаються включити або виключити деякі з них, відповідно до переважно суб'єктивних критеріїв. Питання щодо цього регулярно закриваються регулярно тут на SO.
Вище, натомість, я визначив (якомога точніше), що таке мовна функція "для всієї команди", наведіть приклад (винятки) разом із великими підтверджуючими доказами в літературі про C ++ і попросив ознайомитись із функціями для всієї команди в C ++ поза винятками.
Чи варто використовувати функції "всієї команди", чи це відповідна концепція, може бути суб'єктивним - але це означає лише, що важливість цього питання є суб'єктивною, як завжди.