#include
#include
#include
#include
#include
using namespace std;
struct SA
{
int i;
};
enum enumtest
{
A=1,
B
};
class Base
{
public:
int m;
virtual void fun()
{}
};
class Dclass :public Base
{
public:
void bar() {}
};
int main()
{
/static_cast dynamic_cast const_cast/
/const_cast/
const SA ra{100};
//ra.i = 10; zhi jie xiu gai wrong
SA &rb = const_cast<SA&>(ra);
SA rc = const_cast<SA>(&ra);
rb.i = 200;
cout << ra.i << endl;//xiu gai le ra and rb de zhi
/static_const just like c language/
enumtest a = B;
int ab = static_cast(a);//hu xiang zhuan huan
cout << ab << endl;
int n = 6;
double an = static_cast(n);
cout << an << endl;
//double *pn = static_cast<double *>(n);//bao cuo wu fa zhuan huan
/dynamic_cast/
Base *bp = new Dclass();//bp1->Dclass
Dclass *pd1 = dynamic_cast<Dclass *>(bp);//no problem
Dclass *pd2 = static_cast<Dclass *>(bp);//no problem
Base *bp1 = new Base();//bp1->base
Dclass *pd11 = dynamic_cast<Dclass *>(bp);//safety
Dclass *pd22 = static_cast<Dclass *>(bp);//problem
system("pause");
return 0;
}