zoukankan      html  css  js  c++  java
  • 继承

    这里继承部分也有一部分属于类与对象

    面向对象程序设计中最重要的一个概念是继承

    达到了重用代码功能和提高执行时间的效果

    当创建一个类时,您不需要重新编写新的数据成员和成员函数,只需指定新建的类继承了一个已有的类的成员即可。这个已有的类称为基类,新建的类称为派生类

    一个派生类继承了所有的基类方法,但下列情况除外:

    • 基类的构造函数、析构函数和拷贝构造函数。
    • 基类的重载运算符。
    • 基类的友元函数。

    继承类型

    • 公有继承(public):当一个类派生自公有基类时,基类的公有成员也是派生类的公有成员,基类的保护成员也是派生类的保护成员,基类的私有成员不能直接被派生类访问,但是可以通过调用基类的公有保护成员来访问。
    • 保护继承(protected): 当一个类派生自保护基类时,基类的公有保护成员将成为派生类的保护成员。
    • 私有继承(private):当一个类派生自私有基类时,基类的公有保护成员将成为派生类的私有成员。

    多继承

    #include<iostream>
    using namespace std;
    
    
    
    class Tangle{
    public:
    Tangle(){
    cout<<"Tangle"<<endl;
    };
    int getcost(int area){
    return area*70;
    }
    };
    
    
    
    class Area{
    public:
    int width;
    int height;
    Area(){
    cout<<"Area";
    };
    int getArea(){
    return width*height;
    }
    };
    
    class Home:public Tangle,public Area{
    public:
    void setWidth(int w);
    void setHeight(int h);
    Home(){
    cout<<"Home"<<endl;
    };
    void set(int w,int h){
    setWidth(w);
    setHeight(h);
    
    }
    };
    
    
    void Home::setWidth(int w){
    width=w;
    }
    
    void Home::setHeight(int h){
    height=h;
    }
    
    
    
    int main(){
    Home h;
    h.set(12,21);
    int area = h.getArea();
    cout<<"面积"<<area<<endl;
    cout<<"费用"<<h.getcost(area);
    
    return 0;
    }
    [root@VM_0_11_centos gcc]# ./21.c
    Tangle
    AreaHome
    面积252
    费用17640[root@VM_0_11_centos gcc]# 
    

      另外多继承(环状继承),A->D, B->D, C->(A,B),例如:

    这个继承会使D创建两个对象,要解决上面问题就要用虚拟继承格式

    class D{......};
    class B: virtual public D{......};
    class A: virtual public D{......};
    class C: public B, public A{.....};
    

      虚继承--(在创建对象的时候会创建一个虚表)在创建父类对象的时候

  • 相关阅读:
    Android 按键消息处理Android 按键消息处理
    objcopy
    SQLite多线程读写实践及常见问题总结
    android动画坐标定义
    Android动画效果translate、scale、alpha、rotate
    Android公共库(缓存 下拉ListView 下载管理Pro 静默安装 root运行 Java公共类)
    Flatten Binary Tree to Linked List
    Distinct Subsequences
    Populating Next Right Pointers in Each Node II
    Populating Next Right Pointers in Each Node
  • 原文地址:https://www.cnblogs.com/webcyh/p/11280070.html
Copyright © 2011-2022 走看看