在深入MFC之前,应该先搞懂最简单的this指针。我们先看简单的程序:
- #include <iostream>
- using namespace std;
-
- class Base
- {
- public:
- void fun()
- {
- cout << "Base fun" << endl;
- }
- };
-
- class Derived : public Base
- {
- public:
- void fun()
- {
- cout << "Derived fun" << endl;
- }
- };
-
- int main()
- {
-
- Base b, *pB;
- pB = &b;
- pB->fun();
-
- Derived d;
- pB = &d;
- pB->fun();
-
- return 0;
- }
结果为:
Base fun
Base fun
改为虚函数,如下:
- #include <iostream>
- using namespace std;
-
- class Base
- {
- public:
- virtual void fun()
- {
- cout << "Base fun" << endl;
- }
- };
-
- class Derived : public Base
- {
- public:
- virtual void fun()
- {
- cout << "Derived fun" << endl;
- }
- };
-
- int main()
- {
-
- Base b, *pB;
- pB = &b;
- pB->fun();
-
- Derived d;
- pB = &d;
- pB->fun();
-
- return 0;
- }
结果为:
Base fun
Derived fun
下面我们来看看this指针,程序如下:
- #include <iostream>
- using namespace std;
-
- class Base;
- Base *pB;
-
- class Base
- {
- public:
- Base()
- {
- pB = this;
- cout << "Base Constructor" << endl;
- }
-
- void fun()
- {
- cout << "Base fun" << endl;
- }
- };
-
- class Derived : public Base
- {
- public:
- Derived()
- {
- cout << "Derived Constructor" << endl;
- }
-
- void fun()
- {
- cout << "Derived fun" << endl;
- }
- };
-
- int main()
- {
- Base b;
- pB->fun();
-
- Derived d;
- pB->fun();
-
- return 0;
- }
程序结果为:
Base Constructor
Base fun
Base Constructor
Derived Constructor
Base fun
改为虚函数,程序如下:
- #include <iostream>
- using namespace std;
-
- class Base;
- Base *pB;
-
- class Base
- {
- public:
- Base()
- {
- pB = this;
- cout << "Base Constructor" << endl;
- }
-
- virtual void fun()
- {
- cout << "Base fun" << endl;
- }
- };
-
- class Derived : public Base
- {
- public:
- Derived()
- {
- cout << "Derived Constructor" << endl;
- }
-
- virtual void fun()
- {
- cout << "Derived fun" << endl;
- }
- };
-
- int main()
- {
- Base b;
- pB->fun();
-
- Derived d;
- pB->fun();
-
- return 0;
- }
结果为:
Base Constructor
Base fun
Base Constructor
Derived Constructor
Derived fun
下面的这个程序颇似MFC程序:
- #include <iostream>
- using namespace std;
-
- class Base
- {
- public:
- Base *pB;
-
- Base()
- {
- pB = this;
- cout << "Base Constructor" << endl;
- }
-
- virtual void fun()
- {
- cout << "Base fun" << endl;
- }
- };
-
- class Derived : public Base
- {
- public:
- Derived()
- {
- cout << "Derived Constructor" << endl;
- }
-
- virtual void fun()
- {
- cout << "Derived fun" << endl;
- }
- };
-
- Derived d;
-
- Base *getPointer()
- {
- return d.pB;
- }
-
- int main()
- {
- Base *p = getPointer();
- p->fun();
-
- return 0;
- }
结果为:
Base Constructor
Derived Constructor
Derived fun
如果要深入理解MFC, 那么搞懂上面这些简单的程序是很有必要的。

![[手游] 三网H5小游戏【少年仙路】WIN系服务端+Linux手工服务端+详细搭建教程](https://cdn.jxasp.com:9143/image/20260615/136BC33AA47EB0D84E878835A8B38FDB.png)

















