C++概念整理

时间:2023-03-09 20:00:45
C++概念整理
 /*
面向对象:
多态,
继承
封装
*/
#include <stdio.h>
#include <stdlib.h> //一旦有了纯虚函数,该对象就不能实例化了.
#define USE_PURE_VIRTUAL_FUNC 1 class CBase
{
public:
CBase(){}
~CBase(){}
public:
void doA()//不标virtual,说明不想被子类重载,如果遇到基类对象指针,则使用该函数时永远是用基类的
{
printf("call %s\n",__FUNCTION__);
}
virtual void doB()
{
printf("call %s\n",__FUNCTION__);
}
#if USE_PURE_VIRTUAL_FUNC > 0
virtual void doC() = ;//父类不实现,但子类必须实现.
#endif }; class CChild:public CBase
{
public:
CChild():CBase()
{};
~CChild(){};
public:
void doA()
{
printf("child call doA\n");
}
virtual void doB()
{
printf("child call doB\n");
}
#if USE_PURE_VIRTUAL_FUNC > 0
virtual void doC()
{
printf("child call doC\n");
}
#endif
}; int main(void)
{
#if USE_PURE_VIRTUAL_FUNC <= 0
CBase* pB = new CBase();
CChild* pC = new CChild(); pB->doA();
pB->doB(); pC->doA();
pC->doB(); CBase* pTemp = pB;
pTemp->doA();
pTemp->doB(); pTemp = pC;
pTemp->doA();
pTemp->doB(); delete pB;
delete pC;
#else
CChild* pC = new CChild(); pC->doA();
pC->doB(); CBase* pTemp = NULL;
pTemp = pC;
pTemp->doA();
pTemp->doB();
pTemp->doC(); delete pC;
#endif return ;
}