一:
#include "stdafx.h"
#include <iostream>
using namespace std;
class A{
public:
void f()
{
cout<<"A"<<endl;
}
};
class B:public A{
public:
void f()
{
cout<<"B"<<endl;
}
};
int main()
{
A* pa=new A();
pa->f(); //输出A
B* pb=(B *)pa;
pb->f(); //输出B
delete pa,pb;
pa=new B();
pa->f(); //输出A
pb=(B *)pa;
pb->f(); //输出B
return 0;
}
#include "stdafx.h"
#include <iostream>
using namespace std;
class A{
public:
void virtual f()
{
cout<<"A"<<endl;
}
};
class B:public A{
public:
void virtual f()
{
cout<<"B"<<endl;
}
};
int main()
{
A* pa=new A();
pa->f(); //输出A
B* pb=(B *)pa;
pb->f(); //输出A
delete pa,pb;
pa=new B();
pa->f(); //输出B
pb=(B *)pa;
pb->f(); //输出B
return 0;
}
#include "stdafx.h"
#include <iostream>
using namespace std;
class A
{
public:
A() {m_a = 1; m_b = 2;}
~A() {}
void fun() {printf("%d %d", m_a, m_b);}
private:
int m_a;
int m_b;
};
class B
{
public:
B() {m_c = 3;}
~B() {}
void fun() {printf("%d", m_c);}
private:
int m_c;
};
void main()
{
A a;
B *pb = (B*)(&a);
pb->fun(); //输出1
}
#include "stdafx.h"
#include <iostream>
using namespace std;
class A
{
public:
int a;
A(){a=1;}
void print()
{
printf("%d\n",a);
}
};
class B:public A
{
public:
int a;
B(){a=2;};
};
int main()
{
B b;
b.print(); //输出1
printf("%d\n",b.a); //输出2
}
#include "stdafx.h"
#include <iostream>
using namespace std;
void main(void)
{
char *p = "a";
int i = (int)"a";
int i2 = (int)p;
//int i3 = static_cast<int>(&p);//failed
int i5 = reinterpret_cast<int>(&p);
cout << p <<endl;
cout << &p <<endl;
cout << i << endl;
cout << i2 <<endl;
cout << i5 <<endl;
}
#include "stdafx.h"
#include <iostream>
using namespace std;
void main(void)
{
char *p = "a";
int i = (int)"a";
int i2 = (int)p;
//int i3 = static_cast<int>(p);//failed
int i5 = reinterpret_cast<int>(p);
cout << p <<endl;
cout << &p <<endl;
cout << i << endl;
cout << i2 <<endl;
cout << i5 <<endl;
}