成长随心记2

1)运算符的重载
    d)赋值运算符的重载
    例:class person
    {
    public:
        person():age(10){}
        person(int a):{age=new int(a);}
        person& operator=(person& p) {
            age =new int (*p.age);    //深拷贝,浅拷贝会导致堆区重复释放
            return *this;
        }

    private:
        int* age;
    };


    e)等号运算符的重载
    例:class person
    {
    public:
        person(int a){
            age = new int(a);
        }
        ~person() {
            delete age;
        }
        bool operator==(person& p) {    //注意:==运算符返回的是bool类型
            age = new int(*p.age);    //深拷贝
            if (*age == *p.age&&height==p.height)
                return true;
            else
                return false;
        }
    private:
        int* age;
        int height;
    };


2,继承
    1)作用:减少代码量,提高逼格
    2)语法:class 子类 :继承方式(public,protect,private) 父类
    3)无论是何种继承方式,子类都无法访问父类的private,但是确实都继承了
    4)继承方式为public:子类照搬父类的继承
    5)继承方式为protect:子类继承父类的public,private改为protect
    6)继承方式为private:子类继承父类的private,private改为private
    例:class father
    {
    public:
        int a = 10;
    private:
        int b = 10;
    protected:
        int c = 10;
    };

    class son1:public father//继承方式为public
    {
    public:
        void fan1() {
            a = 20;//继承了父类的public属性,类内可以访问
            c = 20;//继承了父类的protact属性,类内可以访问
            //b = 20;无法访问父类的private属性
        }
    };

    void test1() {
        son1 s1;
        s1.a = 20;//继承了父类的public属性,类外可以访问
        //s1.c = 20;//继承了父类的protact属性,类外不可以访问
        //s1.b = 20;//无法访问父类的private属性
    }

    class son2 :protected father//继承方式为protected
    {
    public:
        void fan2() {
            a = 20;//将父类的public属性改为protact属性,类内可以访问
            c = 20;//继承了父类的protact属性,类内可以访问
            //b = 20;//无法访问父类的private属性
        }
    };

    void test2() {
        son2 s2;
        //s2.a = 20;//将父类的public属性改为protact属性,类外不可以访问
        //s1.c = 20;//继承了父类的private属性,类外不可以访问
        //s1.b = 20;//无法访问父类的private属性
    }

    class son3 :private father//继承方式为private
    {
    public:
        void fan3() {
            a = 20;//将父类的public属性改为private属性,类内可以访问
            c = 20;//将父类的protact属性改为private属性,类内可以访问
            //b = 20;//无法访问父类的private属性
        }
    };

    void test3() {
        son3 s3;
        //s3.a = 20;//将父类的public属性改为private属性,类外不可以访问
        //s3.c = 20;//将父类的protact属性改为private属性,类内不可以访问
        //s3.b = 20;//无法访问父类的private属性
    }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

噌105

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值