国外 网站 模板,网站制作公司加盟,亿网嘉元是什么东西,唐山市住房和城乡建设局网站目录
1#xff0c; 继承的语法
1-1, 继承方式
1-1-1#xff0c; 公共继承public
1-1-2#xff0c; 私有继承private
1-1-3#xff0c; 保护继承protected
2#xff0c; 父类#xff0c;子类同名属性处理
2-1#xff0c; 成员变量同名
2-2#xff0c; 成员函数同…目录
1 继承的语法
1-1, 继承方式
1-1-1 公共继承public
1-1-2 私有继承private
1-1-3 保护继承protected
2 父类子类同名属性处理
2-1 成员变量同名
2-2 成员函数同名
3 多继承
4 菱形问题 1 继承的语法
通过class 子类继承方式 父类 可实现继承
class A : public B
1-1, 继承方式
继承方式分为 public、private、protected 通过继承方式可决定继承的属性在子类的权限
1-1-1 公共继承public
通过public方式继承父类属性与父类保持一致 即父类public的属性 子类也是public 父类protected属性 子类也是protected属性
class Son1 :public Base1
{
public:void func(){//m_a在父类中是public权限 所以子类也是public权限 可修改m_a 100;//m_b在父类中是protected权限 所以子类也是protected权限 可修改m_b 200;//m_c在父类中是private权限 子类不能访问 所以不能修改m_c 300;}
};
1-1-2 私有继承private
通过private方式继承父类属性 在子类中都是private属性
class Son1 :private Base1
{
public:void func(){//m_a在父类中是public权限 所以子类也是private权限 可修改m_a 100;//m_b在父类中是protected权限 所以子类也是private权限 可修改m_b 200;//m_c在父类中是private权限 子类不能访问 所以不能修改m_c 300;}
};
1-1-3 保护继承protected
通过protected方式继承父类属性 在子类中都是protected属性
class Son1 :protected Base1
{
public:void func(){//m_a在父类中是public权限 所以子类也是protected权限 可修改m_a 100;//m_b在父类中是protected权限 所以子类也是protected权限 可修改m_b 200;//m_c在父类中是private权限 子类不能访问 所以不能修改m_c 300;}
};
说明子类都不能访问父类的private权限属性
2 父类子类同名属性处理
2-1 成员变量同名
当子类存在与父类同名的属性时 通过对象.属性方式 访问的是子类的属性 要访问父类的属性 需通过对象.父类::属性方式 进行访问
//Base1是父类名称
cout 子类属性访问m_a s1.m_a endl;
cout 父类属性访问m_a s1.Base1::m_a endl;
2-2 成员函数同名
当子类存在与父类同名的属性时 通过对象.函数()方式 访问的是子类的属性 要访问父类的属性 需通过对象.父类::函数()方式 进行访问
//func()是子类父类同名的成员函数 Base1是父类名称
s1.func();
s1.Base1::func();
3 多继承
通过class 子类继承方式 父类1 ... 继承方式 父类n 可实现多继承
//Base1 Base2为继承的基类
cout 访问基类属性 s1.m_a endl;
cout 访问Base1属性 s1.Base1::m_a endl;
cout 访问Base2属性 s1.Base2::m_a endl;
4 菱形问题
通过虚继承的方式 可解决菱形问题 语法为class 子类virtual 继承方式 父类1, virtual 继承方式 父类2
//加上virtual就表示虚继承 可解决菱形问题
class C :virtual public A, virtual public B