先对上面两小节内容回归一下,第一节中总结了windows的运行原理,事件驱动消息的机制,如何设计窗口应用程序,主要是为了后面学习WFC作基础,重要的是理解原理以及msdn手册的重要性。第二节主要介绍了C++的一些基本特性,比如面向对象的思想、结构体、类、构造函数、方法、虚方法、继承与覆盖、访问控制等知识,其中关于指针与引用的关系这里就不去介绍了。
下面结合程序来分析C++运行的原理
Animal.h头文件内容
#ifndef Animal_C
#define Animal_C Animal_C 通过宏定义解决类redefine的错误,这里宏定义是在编译预处理阶段执行
class Animal
{
public:
void sleep();
void eat();
virtual void breathe();
};
#endif
Fish头文件内容
#include "Animal.h"
class Fish:public Animal//这里加上了public 的目的是让Animal可见,不然在Main函数中将出错:conversion from 'class Fish *' to 'class Animal *' exists, but is inaccessible
{
public:
Fish();//这里要将构造函数初始化(由隐式变为显式),
void breathe();
};
Animal.cpp内容
#include "Animal.h"
class Fish:public Animal//这里加上了public 的目的是让Animal可见,不然在Main函数中将出错:conversion from 'class Fish *' to 'class Animal *' exists, but is inaccessible
{
public:
Fish();//这里要将构造函数初始化(由隐式变为显式),
void breathe();
};
Fish.cpp内容
#include "Animal.h"
class Fish:public Animal//这里加上了public 的目的是让Animal可见,不然在Main函数中将出错:conversion from 'class Fish *' to 'class Animal *' exists, but is inaccessible
{
public:
Fish();//这里要将构造函数初始化(由隐式变为显式),
void breathe();
};
Main.cpp主函数内容
#include "Animal.h"
class Fish:public Animal//这里加上了public 的目的是让Animal可见,不然在Main函数中将出错:conversion from 'class Fish *' to 'class Animal *' exists, but is inaccessible
{
public:
Fish();//这里要将构造函数初始化(由隐式变为显式),
void breathe();
};
附上图片: