29 继承(一)
来源:互联网 发布:mac如何移动桌面图标 编辑:程序博客网 时间:2024/04/29 05:10
三种继承方式
#include <iostream>using namespace std;class Base{public: int x_;protected: int y_;private: int z_;};class PublicInherit : public Base//公有继承{public: void Test() { x_ = 10; y_ = 20; //z_ = 30;//基类私有成员无法直接访问 }private: int a_;};class PublicPublicInherit : public PublicInherit{public: void Test() { y_ = 20; }};class PrivateInherit : private Base//私有继承{public: void Test() { x_ = 10; y_ = 20; //z_ = 30; }};int main(void){ PublicInherit pub; pub.x_ = 20; PrivateInherit pri; //pri.x_ = 10; return 0;}
接口继承与实现继承
将类的公有成员函数称为接口
公有继承,基类的公有成员函数在派生类中仍然是公有的,换句话说是基类的接口成为派生类的接口,因而将它称为接口继承。
实现继承,对于私有、保护继承,派生类不继承基类的接口。派生类将不再支持基类的公有接口,它希望能重用基类的实现而已,因此将它称为实现继承。
继承与重定义
对基类的数据成员的重定义
对基类成员函数的重定义分为两种
overwrite
与基类完全相同
与基类成员函数名相同,参数不同
override
#include <iostream>using namespace std;class Base{public: Base() :x_(0) { } int GetBaseX() const { return x_; } void Show() { cout << "Base::Show ..." << endl; } int x_;};class Derived : public Base{public: Derived() : x_(0) { } int GetDerivedX() const { return x_; } void Show(int n) { cout << "Derived::Show " << n << endl; } void Show() { cout << "Derived::Show " << endl; } int x_;//重定义时隐藏了基类的成员};int main(void){ Derived d; d.x_ = 10; cout << d.GetBaseX << endl; cout << d.GetDerivedX() << endl; d.Show();//调用派生类不带参数的Show d.Base::Show();//调用基类Show return 0;}
class A{public: void FunA() { ... }};//组合、将一个类作为另一个类的对象成员。委托class B{public: void FunB() { a.FunA(); }private: A a_;};
0 0
- 29 继承(一)
- c++ 29 继承一
- 继承(一)
- 继承(一)
- javascript继承(一)
- 继承(一)
- 继承(一)
- C++继承(一)
- JS继承(一)
- 继承(一)
- 继承(一)
- 继承(一)
- JavaScript继承(一)原型继承(简单继承)
- (七)继承(一)
- JavaScript继承详解(一)
- JavaScript继承详解(一)
- JavaScript继承详解(一)
- C#中的继承(一)
- Numpy的repeat函数和tile函数
- toast文字错位
- Kafka源码分析(4)
- Shell脚本分割Nginx日志,并定期清理
- http://www.linuxidc.com/Linux/2014-06/102856.htm
- 29 继承(一)
- 【三层登录之C#版】
- iOS 9 适配中出现的坑
- Android有效解决加载大图片时内存溢出的问题
- call to OpenGL ES API with no current context (logged once per thread)可能会导致加载问题?
- [代码全屏查看]-利用ctrl+v实现粘贴截图完成上传功能
- Eclipse背景颜色自定义设置:
- JS判断是否是IE浏览器
- 高层论坛︱王家耀院士:“互联网+”时空大数据与智慧城市(1)