همون جور که Negative_Se7en گفتن define صرفا یک پیش پردازندست احتمالا حتی قبل از این که کامپایلر بتونه کدو ببینه عددو جایگزین symbol می کنه .
استفاده از const بهتر از define ه چون خطایابی کد رو ساده تر می کنه مثلا فرض کن این کدو داری :
#include <iostream>
const double PI = 3.14;
int main()
{
PI=12;
}
الان این ارور میده که
|error: assignment of read-only variable 'PI'|
ولی اگر بیای خط 2 رو بصورت define تعریفش کنی این جور اروری میده که اصلا مشخص نیست مال چیه !
error: expected primary-expression before '=' token
دلیلشم اینه که PI رو به شکل یک عدد میبینه نه یک متغیر که حافظه داره ( به خاطر همون replace کزدن که گفتم )
این مشکل دیباگ کردن کدو هم سخت تر می کنه.
از نظر سرعت هم از اونجایی که کامپایلر های c++ کاملا بهینه هستن هیچ فرقی بین این 2 تا وجود نداره .