1.继承实例分析
#include <iostream>
#include <stdio.h>
#include <unistd.h>
using namespace std;
class Parent
{
public:
char data[20];
void Function1();
virtual void Function2(); // 这里声明Function2是虚函数
};
void Parent::Function1()
{
printf("This is parent,function1\n");
}
void Parent::Function2()
{
printf("This is parent,function2\n");
}
class Child:public Parent
{
void Function1();
void Function2();
};
void Child::Function1()
{
printf("This is child,function1\n");
}
void Child::Function2()
{
printf("This is child,function2\n");
}
int main(int argc, char* argv[])
{
int num = 2;
Parent parent;
Child child;
Parent *p = new Parent(); // 定义一个基类指针r
while(num--)
{
if(num % 2 == 0)
{
printf("======child=================\n");
p=&child;// 指向继承类对象
}
else
{
printf("======parent=================\n");
p=&parent;// 否则指向基类对象
}
p->Function1();
p->Function2();
sleep(1);
}
return 0;
}
2.class Parent
virtual void Function1(); //加入virtual
#include <iostream>
#include <stdio.h>
#include <unistd.h>
using namespace std;
class Parent
{
public:
char data[20];
virtual void Function1();
virtual void Function2(); // 这里声明Function2是虚函数
};
void Parent::Function1()
{
printf("This is parent,function1\n");
}
void Parent::Function2()
{
printf("This is parent,function2\n");
}
class Child:public Parent
{
void Function1();
void Function2();
};
void Child::Function1()
{
printf("This is child,function1\n");
}
void Child::Function2()
{
printf("This is child,function2\n");
}
int main(int argc, char* argv[])
{
int num = 2;
Parent parent;
Child child;
Parent *p = new Parent(); // 定义一个基类指针r
while(num--)
{
if(num % 2 == 0)
{
printf("======child=================\n");
p=&child;// 指向继承类对象
}
else
{
printf("======parent=================\n");
p=&parent;// 否则指向基类对象
}
p->Function1();
p->Function2();
sleep(1);
}
return 0;
}