1. 动态内存分配

(1)C++通过new关键字进行动态内存申请,是以类型为单位来申请空间大小的

(2)delete关键字用于内存释放

▲注意释放数组时要加[],否则只释放这个数组中的第1个元素。

【实例分析】C++中的动态内存分配

#include <stdio.h>

int main()
{
int* p = new int; *p = ;
*p = *p + ; printf("p = %p\n", p); //p保存堆上开辟空间的地址
printf("*p = %d\n", *p);// delete p; p = new int[];//申请10个int型空间 for(int i=;i<; i++)
{
p[i] = i + ;
printf("p[%d] = %d\n", i, p[i]);
} delete[] p; //注意:释放数组时[]不能漏掉 return ;
}

2. new关键字

(1)对比new和malloc

new

malloc

性质

是个关键字,属C++的一部分

是由C库提供的函数

申请单位

以具体类型为单位

字节为单位

内存初始化

申请单个类型变量时可进行初始化

不具备内存初始化的特性

(2)new关键字的初始化

  int* pi = new int(1);

float* pf = new float(2.0f);

char* pc = new char('c');

【编程实验】初始化动态内存

#include <stdio.h>

int main()
{
int* pi = new int(); //开辟1个int型空间,并初始化为1
//int* pa = new int[1];//注意,这时申请一个数组,与前一行含义不同 float* pf = new float(2.0f);
char* pc = new char('c'); printf("*pi = %d\n", *pi); //
printf("*pf = %f\n", *pf); //2.000000
printf("*pc = %c\n", *pc); //c delete pi;
delete pf;
delete pc; return ;
}

3. C++中的命名空间

(1)在C语言中只有一个全局作用域

  ①C语言中所有的全局标识符共享同一个作用域

  ②标识符之间可能发生冲突

(2)C++中提出了命名空间的概念

  ①命名空间将全局作用域分成不同的部分

  ②不同命名空间中的标识符可以同名而不会发生冲突

  ③命名空间可以相互嵌套

  ④全局作用域也叫默认命名空间

(3)C++命名空间的定义:namespace Name {}

(4)命名空间的使用

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

  ②使用命名空间中的变量using name::variable;

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

【实例分析】命名空间的使用

#include <stdio.h>

namespace First
{
int i = ;
} namespace Second
{
int i = ; //命名空间的嵌套
namespace Internal
{
struct P
{
int x;
int y;
};
}
} int main()
{
using namespace First;//使用First整个命名空间
using Second::Internal::P;//使用命名空内部的P结构体 printf("Fisrt::i = %d\n", i); //0。可以直接写i,因为使用了First整个命名空间
printf("Second::i = %d\n", Second::i);//1。须带命名空间的名字 P p = {, }; printf("p.x = %d\n", p.x);//
printf("p.y = %d\n", p.y);// return ;
}

4. 小结

(1)C++中内置了动态内存分配的专用关键字

(2)C++中的动态内存分配可以同时进行初始化

(3)C++中的动态内存分配是基于类型进行的

(4)C++中命名空间概念用于解决名称冲突问题

第10课 C++中的新成员的更多相关文章

  1. Windows 10 版本 1507 中的新 AppLocker 功能

    要查看 Windows 10 版本信息,使用[运行]> dxdiag  回车 下表包含 Windows 10 的初始版本(版本 1507)中包括的一些新的和更新的功能以及对版本 1511 的 W ...

  2. C++深度解析教程学习笔记(4)C++中的新成员

    1. 动态内存分配 (1)C++通过 new 关键字进行动态内存申请,是以类型为单位来申请空间大小的 (2)delete 关键字用于内存释放 ▲注意释放数组时要加[],否则只释放这个数组中的第 1 个 ...

  3. 第10课 C++中的动态内存分配

    C++中的动态内存分配 C语言是通过库函数来完成动态内存分配的,而C++是通过关键字从语言层面支持的. C语言中的malloc是基于字节来进行内存申请的,C++中是基于类型来进行的. delete加上 ...

  4. C++解析(8):C++中的新成员

    0.目录 1.动态内存分配 1.1 C++中的动态内存分配 1.2 new关键字与malloc函数的区别 1.3 new关键字的初始化 2.命名空间 2.1 作用域与命名空间 2.2 命名空间的定义和 ...

  5. 第10课 初探 Qt 中的消息处理

    1. Qt消息模型 (1)Qt封装了具体操作系统的消息机制 (2)Qt遵循经典的GUI消息驱动事件模型 2. 信号与槽 (1)Qt中定义了与系统消息相关的概念 ①信号(Signal):由操作系统产生的 ...

  6. NET Framework 4 中的新 C# 功能

    http://msdn.microsoft.com/zh-cn/magazine/ff796223.aspx C# 编程语言自 2002 年初次发布以来已经有了极大的改善,可以帮助程序员编写更清晰易懂 ...

  7. 【译】.NET Core 3.0 中的新变化

    .NET Core 3.0 是 .NET Core 平台的下一主要版本.本文回顾了 .Net Core 发展历史,并展示了它是如何从基本支持 Web 和数据工作负载的版本 1,发展成为能够运行 Web ...

  8. Apache Kudu: Hadoop生态系统的新成员实现对快速数据的快速分析

    A new addition to the open source Apache Hadoop ecosystem, Apache Kudu completes Hadoop's storage la ...

  9. [转]【译】.NET Core 3.0 中的新变化

    .NET Core 3.0 是 .NET Core 平台的下一主要版本.本文回顾了 .Net Core 发展历史,并展示了它是如何从基本支持 Web 和数据工作负载的版本 1,发展成为能够运行 Web ...

随机推荐

  1. [python] 基于词云的关键词提取:wordcloud的使用、源码分析、中文词云生成和代码重写

    1. 词云简介 词云,又称文字云.标签云,是对文本数据中出现频率较高的“关键词”在视觉上的突出呈现,形成关键词的渲染形成类似云一样的彩色图片,从而一眼就可以领略文本数据的主要表达意思.常见于博客.微博 ...

  2. [ML] 解决样本类别分布不均衡的问题

    转自:3.4 解决样本类别分布不均衡的问题 | 数据常青藤 (组织排版上稍有修改) 3.4 解决样本类别分布不均衡的问题 说明:本文是<Python数据分析与数据化运营>中的“3.4 解决 ...

  3. 微信小程序代码片段

    微信小程序代码片段是一种可分享的小项目,可用于分享小程序和小游戏的开发经验.展示组件和 API 的使用.复现开发问题等等.分享代码片段会得到一个链接,所有拥有此分享链接的人可以在工具中导入此代码片段. ...

  4. CentOS7安装OpenStack(Rocky版)-05.安装一个nova计算节点实例

    上一篇文章分享了控制节点的nova计算服务的安装方法,在实际生产环境中,计算节点通常会安装一些单独的节点提供服务,本文分享单独的nova计算节点的安装方法 ----------------  完美的分 ...

  5. Ubuntu16.04 和 hadoop2.7.3环境下 hive2.1.1安装部署

    参考文献: http://blog.csdn.NET/reesun/article/details/8556078 http://blog.csdn.Net/zhongguozhichuang/art ...

  6. linux下如何删除十字符libudev.so病毒文件

    服务器不停的向外发包,且CPU持续100%,远程登录后查看发现有一长度为10的随机字符串进程,kill掉,会重新生成另外长度为10的字符串进程.删除文件也会重复生成,非常痛苦.查阅crond相关日志, ...

  7. hdu 5182 结构体排序

    BC # 32 : 打 BC 的时候没看全三个关键字,WA 了五发,花了近一小时,问了一下才发现少看一个条件,于是顺利给跪. 题意:给出若干城市的两次空气质量,首先按空气质量差排序,若相等则按第二次排 ...

  8. matplotlib 双y轴绘制及合并图例

    关键函数:twinx() refer to: https://www.cnblogs.com/Atanisi/p/8530693.html

  9. 使用docusaurus 搭建开发&&api && 博客站点

    对于日常的开发系统以及产品一个简单,方便的api&&文档网站可以七很大的作用 docusaurus 是facebook开源的文档管理框架,使用它我们可以快速的创建专业. 完备的文档站点 ...

  10. dbt 包管理

    dbt 可以方便的支持基于git 的包管理 依赖申明 位置 dbt_project.yml 中的repositories 或者使用packages.yaml 格式 dbt_project.yml: r ...