zoukankan      html  css  js  c++  java
  • C++-------继承问题以及多继承virtual的用法

    class student
    {
     public:
       student(int id,string name)
       {
        this->id=id;
        this->name=name;
       }
     private:
       int id;
       string name;
    }
    
    class student2:public student
    {
     public:
       student2(int id,string name,int s):student(id,name),score(c){}
     private:
       int score;
    }
    /*若在主函数中,student s1(20,"lihua");
                    student2 s2(30,"lijun",90);
                    此时的s2依然是其初始化的值而不是s1中的数值,
                    可以这么理解,继承的仅仅是父类的内存结构
                    子类依然是子类,父类与子类空间是相互独立的
    */
    
    
    
    //公有继承
    class a
    {
        public:
            int item;
        protected :
            int j;
        private:
            int x;*/
    };
    class b:public a
    {
    public:
        void show()
        {
            cout<<i; //i是基类的公有成员变量,在公有继承类的【内部、外部】可以访问
            cout<<j; //j是基类的保护成员变量,在公有继承类的【内部】可以访问
            cout<<x; //x是基类的私有成员变量,在公有继承类的【内部】不可以访问
        }
    };
    
    
    
    //多继承(菱形继承)
    一个类可以继承一个或两个类
    如:class A:public B,public C
        {};
    若有一个基类
    class X:
    {
      int m;
    }
    且B、C分别公有继承X
    则
    main()中,A.m是错误的,因为继承的B、C都有m,必须指明作用域
              A.B::m此时才是正确的
              
    多继承产生的变量重复多份继承问题解决办法:(虚继承virtual关键字)
    如上类:class B:virtual public X{};
            class C:virtual public X{};
            class A:public B,public C{};
  • 相关阅读:
    To My Girlfriend (DP)
    A Simple Nim (SG打表找规律)
    A Boring Question (打表)
    A Simple Chess (Lucas组合数 + 容斥)
    World is Exploding (容斥 + 统计)
    Two (DP)
    K-wolf Number (数位DP)
    Interesting (manacher + 前缀和处理)
    How Many Triangles (极角排序 + 尺取法)
    Divide the Sequence (贪心)
  • 原文地址:https://www.cnblogs.com/god-for-speed/p/10990989.html
Copyright © 2011-2022 走看看