组合与继承

1.当父类没有默认构造函数时,子类必须在初始化成员列表里面显示调用构造函数

    class Vehicle {
        int xx;
    public:
        Vehicle(int x) :xx(x){}
        int getValue() {
            return xx;
        }
    };

    class Car :public Vehicle {
    public:
        Car(int x) :Vehicle(x) {};
    };

2.子类里面构造函数、拷贝构造函数、赋值号。
关于父类的赋值。

    class Traveler {
        string trv;
    public:
        explicit Traveler(string st) :trv(st) {
            cout << "constructor Traveler" << endl;
        };

        Traveler(Traveler &tr) {
            trv = tr.trv;
        }

        Traveler& operator=(const Traveler& tr) {
            if (this != &tr) {
                this->trv = tr.trv;
            }
            cout << "Traveler =" << endl;
            return *this;
        }
    };

    class Pager {
        string pag;
    public:
        explicit Pager(string pa) :pag(pa) {
            cout << "constructor Pager" << endl;
        };
        Pager(Pager& p) {
            pag = p.pag;
        }

        Pager& operator=(const Pager& pa) {
            if (this != &pa) {
                this->pag = pa.pag;
            }
            cout << "Pager =" << endl;
            return *this;
        }
    };

    class BussinessTraveler :public Traveler {
        Pager pager;
    public:
        BussinessTraveler():Traveler("default"),pager("default"){
        }

        BussinessTraveler(string tr,string pa):Traveler(tr),pager(pa){}
        BussinessTraveler(BussinessTraveler& buTr):Traveler(buTr),pager(buTr.pager){
        }
        BussinessTraveler& operator=(BussinessTraveler& bs) {
            if(this!=&bs){
                Traveler::operator=(bs);
                this->pager = bs.pager;
            }
            return *this;
        }
    };

拷贝构造函数在初始化列表里面,显示的调用父类的拷贝构造函数
赋值号,用Base::operator=(bs) 显示调用

3.名字隐藏对静态成员函数来说也是成立的。
另外在类里也不能仅用返回值来重载函数

4.private protect形式的派生类 像基类转换,编译器报错:
提示转换方式存在但无法访问!
protect派生类也不能访问基类的public的函数

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值