Практично кожне слово, яке ви можете додати як ключове слово до мови, майже напевно було використано як ім'я змінної чи іншу частину робочого коду. Цей код буде порушений, якби ви зробили це слово ключовим словом.
Неймовірно щаслива річ у auto
тому, що це вже було ключове слово, тому у людей не було змінних з цим ім'ям, але ніхто не використовував його, оскільки це було за замовчуванням. Чому типу:
auto int i=0;
коли
int i=0;
означало саме те саме?
Я припускаю, що десь на планеті була якась невелика кількість коду, яка використовувала «авто» по-старому. Але це можна було б виправити, видаливши "auto", і воно буде працювати знову. Тож було досить очевидним вибором змінити ключове слово.
Також мені здається, що це ясніше значення. Якщо ви працювали з подібними варіантами, ви можете побачити, var
що декларація якось менш сильно набрана, ніж якщо ви натискали всі клавіші самостійно на клавіатурі, щоб вказати тип змінної. Мені auto
стає зрозуміліше, що ви просите компілятор автоматично вивести тип, який настільки ж сильний, як якщо б ви його вказали самостійно. Тож справді це була дуже вдала перерва, яка зробила гарне ім’я доступним для комітету.
Для уточнення (малого) розриву:
Якби у вас був
auto int i=0;
і спробувавши компілювати компілятор C ++ 11, тепер ви отримаєте помилку типу
помилка C3530: "auto" не може поєднуватися з будь-яким іншим специфікатором типу
Це тривіально, ви просто видалите або авто, або int та перекомпілювати.
Однак є більша проблема. Якби у вас був
auto i = 4.3;
C і справді старий C ++ зробив i
би int
(як це було б, якщо ви припинили auto
- декларація за замовчуванням була int
). Якщо ви пройшли дуже довгий час, не складаючи цей код, або використовуєте старі компілятори, ви могли б мати частину цього коду, принаймні теоретично. C ++ 11 зробив би це double
так, оскільки це 4.3. (Або, можливо float
, я все ще перебуваю в режимі "Боксерський день", але справа не в цьому int
.) Це може ввести непомітні помилки у вашому додатку. І без попереджень чи помилок компілятора. Люди в цьому човні повинні шукати глобально, auto
щоб переконатися, що вони не використовували його старим способом, перш ніж перейти до компілятора C ++ 11. На щастя, такий код зустрічається вкрай рідко.
auto
може порушити зворотну сумісність, але, залежно від того, як частоvar
використовується в якості імені змінної, порівняно з тим, як частоauto
ключове слово використовується в коді до 11, комітет, можливо, висловив думку про те, що він порушує сумісність менш кардинально, ніж введення нового ключове слово буде.