美文网首页
NDK—C++命名空间和引用

NDK—C++命名空间和引用

作者: Lypop | 来源:发表于2017-10-26 07:12 被阅读0次

    随着NDK的增量更新的学习,NDK也要结束了,今天我们开始新的内容那就是C++,相对于C,C++带来了更多的操作这里我们讲解一下命名空间和引用

    命名空间

    在C++中,在大型的程序中,以及在使用各种各样的C++库时,这些标识符的命名发生冲突,标准的C++引入了关键字namespace,这样就可以更好的控制标识符的作用域了

    我们在C++中进行输出语句可以使用

        std::cout << "this is C plus plus" << std::endl;
    

    如果你不想写std的话只需要在顶部使用using namespace std;即可

    首先我们自定义一个命名空间

    namespace NSP_A{
    int a = 9;
    struct Teacher
    {
        char name[20];
        int age;
    };
    
    struct Student
    {
        char name[20];
        int age;
    };
    }
    

    接下来我们要进行访问只需要使用命名空间+::访问修饰符即可调用

    cout << NSP_A::a << endl;
    

    当然命名空间也可以进行嵌套

    namespace NSP_B{
    int a = 12;
    //命名空间进行嵌套
    namespace NSP_C{
        int c = 90;
    }
    }
    

    访问规则和单层类似

    cout << NSP_B::NSP_C::c << endl;
    

    是不是有点心累,这写起来也忒费劲了我们如果想下面的操作都使用NSP_A命名空间,则可以这样

    using NSP_A::Student;
    Student t;
    t.age = 90;
    

    是不是简单了许多,自己也避免了多次的NSP_A::

    bool类型

    这是一个小知识点,在C++中定义了bool类型

    bool b = true;
    

    你也可以让整数,0代表false,非0代表true

    还有就是三元运算符在C++中可以当左值,在C语言中就不可以

    引用和指针

    在C++中新增加了一个新成员那就是引用,相对于指针来说,共同点都可以修改内存空间,但不同点就是指针指向内存地址,而引用是内存的别名,就代表原先的地址。下面我们来列举一下指针和引用的区别

    1. 指针是一个实体,引用只是一个别名

    2. 引用只能在定义的时候初始化一次,之后不可变;指针可以改变

    3. 引用没有const,指针可以有const

    4. 引用不能为空,指针可以为空

    5. sizeof引用得到的是变量的大小,sizeof指针得到的是指针的大小

    6. 单纯给变量取别名没有任何意义,作为函数参数传递,能保证参数传递过程中不产生副本

    7. 引用可以直接操作变量,指针要通过取值(*p),间接操作变量,指针的可读性差

       void swap_1(int &a, int &b){
       int temp = a;
       a = b;
       b = temp;
       }
       
       void swap_2(int *a, int *b){
           int temp = (*a);
           *a = *b;
           *b = temp;
       }
      

    上面的例子也是比较经典的,但是使用引用常用在函数的参数和返回值上

    void getTeacher(Teacher* &p){
    p = (Teacher*)malloc(sizeof(Teacher));
    p->age = 20;
    }
    

    指针的引用可以代替二级指针,可以用下面的替换

    void getTeacher(Teacher **p){
    Teacher *tmp = (Teacher*)malloc(sizeof(Teacher));
    tmp->age = 20;
        *p = tmp;
    }
    

    接下来就是指针常量和常量指针

    指针常量:指针的常量,不改变地址的指针,但是可以修改它指向的内容

    int *const p1 = &a;
    

    常量指针:指向常量的指针,内容不能修改

    const int *p2 = &a;
    

    ok,C++的命名空间和引用就讲完了,多多练习就一定会有收获,加油

    相关文章

      网友评论

          本文标题:NDK—C++命名空间和引用

          本文链接:https://www.haomeiwen.com/subject/wlrhpxtx.html