首页 > 其他分享 >2022.01.19.继承

2022.01.19.继承

时间:2023-01-06 13:24:07浏览次数:35  
标签:19 子类 CFather 继承 int 父类 public 2022.01

父类(基类)

class CFather{
public:
    int m_a;
    int m_money;
    /*CFather(){
        m_a=30;
        m_money=100;
    }*/
    CFather(int a,int b){
        m_a=a;
        m_money=b;
    }
    ~CFather(){
        cout<<"~CFather"<<endl;
    }
};

子类(派生类):子类可以使用父类成员

class CSon:public CFather{
public:
    int m_son;
    int m_money;
    CSon():CFather(101,1000){
        m_son=10;
        m_money=20;
    }
    ~CSon(){
        cout<<"~CSon"<<endl;
    }
};

定义子类成员,其中包含父类成员,先父类后子类
定义子类对象,执行构造顺序,先父类后子类,父类的默认无参的构造可以被编译器自动调用
如果父类中没有默认的无参构造,在子类参数列表中,手动调用父类带参数的构造
继承下,子类对象在生命周期结束时,回收额外的空间,调用析构顺序,仙子类后父类
类之间的关系:纵向关系,继承。

 

继承好处:将一些功能相似的类的公共成员,单独抽离出来,形成一个类
这个类就是父类,子类继承父类,包含了这些公共的成员,提高了程序代码的复用性,扩展性,后期更容易维护。

继承方式 描绘了父类的成员在子类
共有继承 public
父类 子类
public: public
protected: protected
private: 不可访问
保护继承 protected


父类 子类
public: protected
protected: protected
private: 不可访问
私有继承 private


父类 子类
public: private
protected: private
private: 不可访问

class CFather
{
public:
    int m_pub;
protected:
    int m_pro;

private:
    int m_pri;
};
class CSon:public CFather{
public:
    void show_public(){
        cout<<m_pub<<endl;
    }
};
int main(){

    CSon son;
    cout<<son.m_pub<<endl;
    //cout<<son.m_pro<<endl;

    system("pause");
    return 0;
}

 

标签:19,子类,CFather,继承,int,父类,public,2022.01
From: https://www.cnblogs.com/hualuoyumufeng/p/15827120.html

相关文章

  • 2022.01.14.const
    #include<iostream>usingnamespacestd;classCTest{public:constintm_a;mutableintm_b;//关键字:mutable在常函数中可以修改//初始化参数......
  • 2022.01.21.类成员函数指针
    在继承下,允许未经转换,父类的指针可以指向子类指针父类的指针可以指向子类对象:同意多种类型,提高复用性,扩展性在调用继承于同一个父类的多个子类的同一个函数时,可以使用父......
  • 2022.01.18.类之间的横向关系
    组合:部分与整体,包含与被包含有生命周期约束关系它是一种“isapartof”的关系(部分与整体)。组合是一个类中包含另一个类对象。相比聚合,组合是一种强所属关系,组合关系的两......
  • 2022.01.23.多态
    多态的缺点:1.虚函数指针在每个对象中都会存在一份,虚函数列表列表中每个类存在一份,空间问题2.效率问题3.安全性问题抽象类:包含纯虚函数的类成为抽象类,不能定义对象纯虚函......
  • (二)封装、继承、多态
    封装、继承、多态this和super关键字1、对象调用它,它就是这个对象2、构造器中可以使用this()调用构造器3、this()必须在构造器体的第一行,不能有多个this()1publicDe......
  • Dubbo Provider远程代码执行漏洞(CVE-2020-1948)
    漏洞编号CVE-2020-1948漏洞原理Dubbo协议默认采用Hessian作为序列化反序列化方式,而Hessian存在危险的反序列化漏洞,攻击者发送未经验证的服务名或方法名的RPC请求,使Dub......
  • BUUCTF | [[GXYCTF2019]BabyUpload
    知识点文件类型绕过......
  • sqlserver2019创建“可查询”“可创建视图”的用户
      ————————————(个人随笔,记录使用,仅供参考)一、SqlserverSSMS创建一个只读的用户1、用拥有管理权限的用户连接数据库(sa)2、选择“安全性”=》“登录名”=......
  • Tomcat文件包含及文件读取漏洞(CVE-2020-1938)
    漏洞影响CVE-2020-1938ApacheTomcat9.x<9.0.31ApacheTomcat8.x<8.5.51ApacheTomcat7.x<7.0.100ApacheTomcat6.x漏洞利用前提目标机器开启AJPConnector服务......
  • 继承ModelViewSet 获取url上参数的写法
    url('^task/reqs/(?P<pk>\d+)/$',patroltaskviews.PatrolTaskViews.as_view({"get":"getTaskReqs"})),views视图classPatrolTaskViews(ModelViewSet):defget......