1、内部类
#include<iostream>
using namespace std;
class stu
{
public:
int a;
stu():db2(this)
{
a = 123;
}
//public:
// class stu_0
// {
// public:
// int b;
// stu_0()
// {
// b = 133;
// }
// void fun()
// {
// stu db;
// cout << db.a << endl;
// }
public:
class stu_1
{
public:
int b;
stu* p;
stu_1(stu*pf):p(pf)
{
b = 133;
}
void fun()
{
cout << p->a<< endl;
}
};
public:
/*stu_0 db;*/
stu_1 db2;
};
int main()
{
stu db1;
db1.a = 15;
/*db1.db.fun();*/
db1.db2.fun();
system("pause");
return 0;
}
2、static_cast
#include<iostream>
using namespace std;
class stu
{
public:
int a;
};
class stu1:public stu
{
public:
int b;
};
class stu2
{
public:
double c;
};
int main()
{
stu* p;
stu1* q;
stu2* m;
//p = (stu *)q;
p = static_cast<stu*>(q);
//m = static_cast<stu2*>(q);//互不相干的两个类之间不能进行转换。
system("pause");
return 0;
}
*1、当type和expression可以互相隐式转换的时候,这个方法执行起来才是合法的。
2、基类子类之间相互转换没有问题,如果与一个不相干的类进行转换,会报错。