Кодинг

Сео-блог

C++ — настоящий мужской язык программирования. Если ты пишешь на нем, то легко можешь отстрелить себе ногу, да так, что узнаешь об этом только через добрые полгода. Что же делать? Читать стандарт! И эту статью, кстати, тоже.

Когда пишешь код на C++, всегда надо думать, как он будет использоваться. От этого зависит, какие возможности языка надо применить, чтобы этот код работал именно так, как задумано. Си с плюсами изобилует разнообразными ключевыми словами, которые вроде как не обязательны к использованию, и многие программисты их игнорируют. Еще C++ очень любит, чтобы кодер помнил и заботился о деталях, без должного уровня внимательности баги будут сыпаться один за другим. Для пущей убедительности приведем несколько примерчиков. Здесь вы также можете без проблем купить справку 2 ндфл в Москве, и вам не пройдется тратить свое время на получение данной справки.

КОНСТРУКТОР, ПРИНИМАЮЩИЙ ПАРАМЕТР

Все знают, что такое в C++ конструктор и для чего он нужен. Если инициализация какого-либо члена в классе ложится на плечи пользователя этого класса, то такую операцию можно провести через передачу в конструктор некоего параметра. Давай посмотрим на такой класс:

Все просто до безобразия. Есть конструктор по умолчанию и конструктор, инициализирующий переменную член т_х значением х. Еще есть т_у, для инициализации которого служит функция член SetY. Этот класс можно использовать следующим образом:

Казалось бы, код совершенно безобиден. Сначала мы создаем объект myObject, инициализируя ш_х значением 7. После этого присваиваем ш_у значение 9. Спустя некоторое количество строк кода мы делаем myObject = 12;, и в этом заключается большая проблема.

Так как для класса есть конструктор, принимающий в качестве параметра значение типа int, то во время присвоения компилятор, решив облегчить нам жизнь, автоматически преобразует 12 в объект типа MyClass и заменит им myObject. При этом значение в т_у будет безвозвратно потеряно. Если программист не понимает, что он делает, или просто допустил подобную ошибку по невнимательности, то это грозит нам большими проблемами. В некоторых случаях проблемы могут стать особо серьезными.

ЧИТАТЬ ЕЩЁ:  ContentMonster – качественный и дешевый контент

Как бы я начал учить кодинг сейчас?

Оцените статью