اعلان فقط اعلام این نکته به کامپایلر هست که یه متغیر یا شیء یا تابع در برنامه وجود داره. مثلاً
...
int f();
void main(){
int a = f();
}
int f(){
...
}
در حالی که وقتی کامپایلر به
int a = f()
میرسه تابع
f
هنوز تعریف نشده اما اعلان شده. بنابراین کامپایلر اخطار نمیده.
برای اشیا:
...
class C{
...
};
void main(){
C *obj;
...
obj = new C();
}
با خط
C *obj
اعلان اتفاق میافته و بنابراین میتونیم از شیء استفاده کنیم هر چند از نظر اجرایی اخطار داره.
با خط
obj = new C()
تعریف میکنیم و حالا استفاده از شیء خطای زمان اجرا نداره.
هیچ پژوهش انسانی نمیتواند ادعای علمی بودن داشته باشد، مگر اینکه از برهان ریاضی برخوردار باشد (لئوناردو داوینچی)