Форум программистов, компьютерный форум CyberForum.ru

Чем оличается define от const - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Размер вводимого числа http://www.cyberforum.ru/cpp-beginners/thread91704.html
int a; cout<<"Vvedite chislo "; cin >>a; Если ввести большое число то программа падает. Я понимаю почему. Но как этого избежать? Пусть а long всеравно при вводе оч большого числа и лонг не хватает. Слышал что бороться с этим как-то можно но как хз.
C++ Матрица Помогите решить Дана матрица размера M × N. Упорядочить ее столбцы так, чтобы их последние элементы образовывали убывающую последовательность http://www.cyberforum.ru/cpp-beginners/thread91694.html
C++ Сортировка слов по буквам
В текстовом файле задано. Считать этот текст и создать контейнер слов, посортировать его по количеству букв в слове, вывести в файл.
Библиотека. C++
Какая нужна библиотека для функций? gotoxy putch textcolor clrscr
C++ Умножение двух чисел (С++) http://www.cyberforum.ru/cpp-beginners/thread91682.html
Пожалуйста, помогите написать программу на С++: Умножить два числа согласно алгоритму «правила умножения столбиком». Заранее большое спасибо)
C++ Вызов оператора приведения базового класса Добрый день. У меня есть иерархия классов. class A: B { ... operator const char* () const; ... подробнее

Показать сообщение отдельно
insideone
Модератор
Автор FAQ
3638 / 916 / 49
Регистрация: 10.01.2010
Сообщений: 2,469
01.02.2010, 19:45
C++
1
2
3
4
const int a = 5; // переменная к которой можно обратиться по имени
 
#define A 5
// сообщение компилятору "встретишь А замени его на 5"
В книге "Эффективное использование С++" (Скотт Майерс) первый совет - "Предпочитайте const и inline использованию #define.
Если кратко то допустим
C++
1
#define max(a, b) ((a) > (b) ? (a) : (b))
может серьёзно подвести если пользоваться так
C++
1
max(++a, b);
Если бы мы использовали функцию то мы бы сравнили a+1 и b
а define выполнит подобное:
C++
1
(++a) > (b) ? (++a) : (b)
Получится что a у нас возрастет хотя мы этого не хотели.

В любом случае #define это лишь инструмент и его использование зависит от обстоятельств, однако используя его вы должны понимать как оно действует и представлять как им нельзя пользоваться.
В случае с const все прозрачно... ведь это обычная переменная, основа основ, что тут сделаешь...
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru