• 命名空间-继承-成员访问权限


    命名空间用来避免命名冲突

    namespace MJ{    //定义一个命名空间
        int g_age;    //这是全局变量
        class Person {
            int m_age;
        };
    }   
    
    class Person {
        int m_height;
    }
    
    MJ::Person person;
    MJ::g_age =10;    //使用全局变量
    
    using namespace MJ;    //从这一行开始,下面都使用命名空间的
    

    创建的命名空间,默认都嵌套在全局命名空间里面,它没有名字

    ::func();    //使用的是全局命名空间下的func()
    

    其他编程语言的命名空间

    • java Package包名(文件夹)
    • Objective-C 类前缀 MJPerson

    继承

    struct Person {    //有共性的类
        int m_age;
        void run() {}
    };
    
    struct Student : Person {    //继承Person,把它所有东西拿过来
        int m_score;
        void study() {}
    }; 
    
    • Student是子类,subclass,派生类
    • Person是父类,superclass,超类
    • C++没有JAVA、Objective-C的基类
      Java所有定义的类都继承它,java.lang.Object,不写也默认写了
      Objective-C是继承NSObject

    继承以后对象的内存布局

    struct Person{ ...};
    struct Student : Person { ...};
    struct GoodStudent : Student { ...};
    ```    //父级排在内存地址的最前面
    
    # 成员访问权限
    * public:公共的(struct默认)
    * protected:子类内部、当前类内部可以访问
    * private:私有的,只有当前类内部访问(class默认)
    
    

    struct Student : private Person { ...};
    class Student : public Person { ...}; //使用这种方式把父类拿过来用

  • 相关阅读:
    leetcode : Valid Sudoku
    leetcode : Longest Increasing Subsequence
    leetcode : Search for a Range
    leetcode : Search Insert Position
    leetcode : next permutation
    leetcode : Implement strStr()
    leetcode : Remove Element
    框架:Spring MVC
    笔试:在线编程相关
    J2EE:关系(一对多、多对一、多对多关系)
  • 原文地址:https://www.cnblogs.com/sec875/p/12284139.html
Copyright © 2020-2023  润新知