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编译器 : 对函数名不会添加一些参数的信息,所以不支持函数的重载,

原文地址:https://www.cnblogs.com/qxj511/p/5215107.html