c++里的继承、多态还有运算符重载

C++里的继承、多态还有运算符重载,直接把面向对象的核心给讲透了。咱们先看继承,它就像一把剪刀,把已有的类的接口和实现剪下一块,拼接到新的类上。基类和派生类之间用个“:”连起来,就把血脉关系给摆明了,代码也就有了家族树的模样。写代码的时候通常都是public继承,这种方式让子类对外公开了父类的接口。当然也有protected和private继承,protected适合兄弟之间共享数据,private是给子类加了个安全锁,不让直接调用父类成员。 如果要搞多继承呢,C++允许一个子类同时继承多个父类。写法上就是把不同基类用逗号隔开就行,不过这种情况得小心点。基本很少会用protected或者private继承来做多继承的操作。 接着是运算符和函数重载这块。函数重载就好比一个名字的不同面孔,只要参数列表不一样就能在同一个作用域内多次声明同名函数。光是靠返回值不同是区分不开重载的,编译器会在这上面迷路。 运算符重载实际上是一种带operator关键字的特殊函数。比如Box operator+(const Box&, const Box&),要是定义成非成员函数,调用的时候就必须把两个参数都传进去。 最后说说多态。当类形成了层次结构并且通过继承关联起来后,多态就登场了。虚函数用virtual声明,在运行时决定具体调用哪个实现。纯虚函数在声明末尾加个= 0,这就强制子类必须给出具体实现。抽象类里面至少得有一个纯虚函数,这样它自己就不能被实例化对象了,只能用来当接口用。要是试图创建抽象类的实例,编译器肯定会报错,逼得派生类必须把所有纯虚函数都给实现了。