zoukankan      html  css  js  c++  java
  • 命名空间-继承-成员访问权限

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

    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 { ...}; //使用这种方式把父类拿过来用

  • 相关阅读:
    一位区域销售经理百条经验手记
    PAIP.FLEX与JAVA数据对应关系.txt
    转:java生成EXCEL表格(POI vs JXL)
    逆向分析工具介绍
    applet与SERLET交互...
    AT命令集(
    关于WINDOWS超级终端的使用来调试MODEM,串口.
    poj1331
    poj1338
    poj1325
  • 原文地址:https://www.cnblogs.com/sec875/p/12284139.html
Copyright © 2011-2022 走看看