PDA

View Full Version : به این برنامه نگاه کنید



houtanal
سه شنبه 28 مهر 1383, 18:43 عصر
سلام


#include<iostream.h>
class a{
public:
int aone;
int atwo;
};
class b:public a{
public:
f(){
cout<<"This is bi.atwo:"<<atwo;
}
};
main(){
a ai;
ai.aone=0;
cout<<"this is ai.aone!:"<<ai.aone<<endl;
b bi;
bi.atwo=1;
bi.f();
system("ls");
}
حالا خروجی:



this is ai.aone!:0
docs main.cpp main.o Makefile Makefile.am Makefile.in templates test
This is bi.atwo:1
Press Enter to continue!

باید تابع system بعد از bi.f() اجرا شود اما چرا قبل از آن اجرا می شود؟

MicroGalaxy
سه شنبه 28 مهر 1383, 23:08 عصر
خیلی جالبه فکر کنم بافر میشه چون وقتی عبارت endl رو بعد از دستور cout در تابع f می زاریم دیگه این اتفاق نمی افته ...... یه چیز دیگه هم هست اگه از cout در تابع f استفاده نکنیم باز هم این اتفاق نمی افته باز هم اینکه به احتمال زیاد تابع system از iostream برای چاپ استفاده می کنه ... و در آخر اینکه مهم اینکه تابع bi.f() قبل از system اجرا می شه ولی خروجیش بعد از system ظاهر می شه !!!!!!!!!!!!!!!