__IDIN
دوشنبه 24 آبان 1389, 18:53 عصر
با سلام به همگی.
لطفا به این تکه کد نگاه کنید
//foo.h
class Base
{
public :
void f();
void g();
int mBaseData1;
int mBaseData2;
int mBaseData3;
};
class Derived : public Base
{
public :
void h();
int mDerivedData1;
int mDerivedData2;
};
//foo.cpp
#include"foo.h"
#include <iostream>
using std::cout;
using std::endl;
void main()
{
Base* base = new Base();
Derived* derived = (Derived*)base; // DownCast
derived->mDerivedData1 = 6;
cout<< derived->mDerivedData1<<endl; // Result = 6;
}
برای من این سوال پیش اومد که طبیعتا نمیشود به متغیر عضوی که تخصیص حافظه نشده است
دسترسی داشت (منظور mDerivedData1) ولی این تکه کد عدد 6 را در کنسول چاپ می کند, که
بیانگر این است که به نحوی دسترسی انجام گرفته و این برای من جای سوال داره.به نظر شما
باید بدین شکل باشد؟
کامپایلر : MS VC++ 2010
با تشکر.
لطفا به این تکه کد نگاه کنید
//foo.h
class Base
{
public :
void f();
void g();
int mBaseData1;
int mBaseData2;
int mBaseData3;
};
class Derived : public Base
{
public :
void h();
int mDerivedData1;
int mDerivedData2;
};
//foo.cpp
#include"foo.h"
#include <iostream>
using std::cout;
using std::endl;
void main()
{
Base* base = new Base();
Derived* derived = (Derived*)base; // DownCast
derived->mDerivedData1 = 6;
cout<< derived->mDerivedData1<<endl; // Result = 6;
}
برای من این سوال پیش اومد که طبیعتا نمیشود به متغیر عضوی که تخصیص حافظه نشده است
دسترسی داشت (منظور mDerivedData1) ولی این تکه کد عدد 6 را در کنسول چاپ می کند, که
بیانگر این است که به نحوی دسترسی انجام گرفته و این برای من جای سوال داره.به نظر شما
باید بدین شکل باشد؟
کامپایلر : MS VC++ 2010
با تشکر.