#include <iostream>
#include <string>
#include <vector>
using namespace std;
struct Base
{
string baseName;
};
struct SubA : public Base
{
string subName_A;
};
struct SubB : public Base
{
string subName_B;
};
//by zhaocl
int main()
{
//init
Base * base;
base->baseName = "baseName";
A a;
B b;
a.baseName = "baseA";
a.subName_A = "subA";
b.baseName = "baseB";
b.subName_B = "subB";
//此时只能访问基类成员
base = &a;
cout << base->baseName << endl;
base = &b;
cout << base->baseName << endl;
//访问所有成员
cout << ((SubA*)base)->baseName << endl;
cout << ((SubA*)base)->subName_A << endl;
return 0;
}
说明:
1、struct和class的区别这里就不赘述了,同理class
扩展:
1、实际应用:有多个文件存在,他们有共同的属性,也有不同的属性。为了便于区分和管理,我们需要设计一个合理的类结构。比如一个基类,其中包含共有属性,每个文件是它的子类,包含各自的属性,而不是每个文件一个单独的类。这样,我们操作共同属性时,可以定义一个基类指针就可以了,而不是分别定义多个类。