语法:
class 子类 : 继承方式 父类
//基类
class basePage
{
public:
void header()
{
cout << "首页" << endl;
}
void footer()
{
cout << "帮助" << endl;
}
};
//子类
class JAVA :public basePage
{
public:
void content()
{
cout << "JAVA" << endl;
}
};
继承方式
继承中的对象模型
class base { public: int m_a; protected: int m_b; private: int m_c; }; class son :public base { public: int m_d; }; void test() { //父类中所有非静态成员都会被子类继承,私有成员也会被继承,只是被编译器隐藏,我们看不到 cout << "size of son=" <<sizeof(son)<< endl; //16 }
继承中构造和析构的顺序
先构造父类,再构造子类。析构顺序和构造顺序相反。
继承中同名成员的处理方式
当子类与父类出现同名成员,如何通过子类对象,访问到子类或父类中同名的数据?
访问子类同名成员:直接访问
访问父类同名成员:需要加作用域
class base
{
public:
base()
{
m_a=10;
}
int m_a;
void func()
{
cout << "base-func调用" << endl;
}
};
class son :public base
{
public:
son()
{
m_a = 20;
}
int m_a;
void func()
{
cout << "son-func调用" << endl;
}
};
//同名成员属性
void test()
{
son s;
cout << "son--m_a==" <<s.m_a<< endl;
cout << "base--m_a==" << s.base::m_a << endl;
}
//同名成员函数
void test1()
{
son s;
s.func(); //直接调用为子类同名成员函数
s.base::func(); //父类
}
继承同名静态成员处理方式
和非静态成员处理方式一致。
多继承
语法:
class 子类 : 继承方式 父类1 , 继承方式 父类2……