zoukankan      html  css  js  c++  java
  • 3、C++新的关键字

        C++ 添加了一些全新的关键字。

    1、new

        new 来进行动态内存的分配,而delect 则是进行内存的释放,

    申请的方式:

    变量申请:

    int *p = new int; // 申请开辟一块四个字节的内存空间,一个 int 型的空间
    delect p; // 删除的是变量

     

    数组申请:

    int *p = new int[5] // 开辟一个大小为 5个 的整型的数组空间
    delect [] p; // 删除的是数组

        申请的空间一般是没有经过初始化的,如果需要初始化的话,就要申请的方式变为:

    int *P = int[5]();

        添加了 ()的话,申请的内存空间就会被初始化为零,原因是添加了括号,就会调用 new 的构造函数。

    new 和 malloc 区别:

        (1)new 是C++的,malloc 是C库提供的函数

        (2)new 以具体类型为单位进行内存的分配,malloc 只能以字节为单位进行内存的分配

        (3)new 在申请单个类型变量时可以直接进行初始化,malloc 不具备内存初始化的特性

    申请单个类型的时候,直接进行初始化:

    int *p = new int(1); 
    printf("*p = %d
    ", *p); 
    delete p;

        可见,申请具体类型的时候,直接初始化为“1”,

    2、命名空间

        其实就是相同的名字,根据使用的区域进行划分,解决名称冲突的问题,

    命名空间的定义:

    命名空间的定义:
    namespace first
    {
        int i = 0;
    }
    namespace second
    {
        int i = 1;
        namespace third
        {
            int j = 3;
        }
    }

    使用:

    使用整个命名空间 using namespace name;

    使用命名空间的变量 : using name :: 变量

    使用默认的命名空间的变量: :: 变量

    使用:

    using second::i;
    printf("i = %d
    ", i);
        using second::i;
        printf("i = %d
    ", first::i);
    using second::third::j;
    printf("j = %d
    ", j);

    3、强制类型转换

        好几个关键字,不想看,

    4、指针和引用的区别

        指针是一个变量,其值是一个内存的地址,,通过指针访问对用内存地址中的值

        引用只是一个变的新的名字,所有对引用的操作,都会被传递到被引用的变量上,

        指针就是变量,不需要进行初始化,也可以指向不同的地址

        引用天生在定义的时候,就被初始化,之后不能再引用其他的变量、

    5、extern “C”的分析:为什么C不支持函数的重载

      extern “C”是告诉编译器,里面的内容是要按照C的方式进行编译,而C++编译的方式和C的编译的方式,对于函数的编译的方式,他们只在对函数名编译的方式不一样,也就是说,它们各自的编译器对函数名命名的方式不一样,而函数体内部的编译方式,其实是一样的,

        C++编译器: 对函数名会添加一些参数的信息,所以可以支持函数的重载

        C编译器 : 对函数名不会添加一些参数的信息,所以不支持函数的重载,

  • 相关阅读:
    STM32之系统滴答定时器
    MPU6050带字符驱动的i2c从设备驱动2
    MPU6050带字符驱动的i2c从设备驱动1
    基于μC/OS—III的CC1120驱动程序设计
    STM32串口DMA超时接收方法,可大大节约CPU时间
    neo1973 audio subsystem
    题解模板
    在 GoLang 中使用 jwt 进行认证
    (OperationNotSupportedInTransaction) Cannot create namespace test.application in multi-document transaction 错误的解决方法
    server selection timeout, current topology: { Type: ReplicaSetNoPrimary, Servers: Type: RSGhost 错误的解决方法
  • 原文地址:https://www.cnblogs.com/qxj511/p/5215107.html
Copyright © 2011-2022 走看看