Chinaunix首页 | 论坛 | 博客
  • 博客访问: 202405
  • 博文数量: 80
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 824
  • 用 户 组: 普通用户
  • 注册时间: 2014-06-12 21:40
个人简介

只有今天的埋头,才有明天的出头。

文章分类

全部博文(80)

文章存档

2014年(80)

我的朋友

分类: C/C++

2014-11-02 09:27:27

C++中的动态内存分配,c++中通过new关键字进行动态内存申请,c++中的动态内存申请是基于类型进行的,delete关键字用于内存释放

变量申请:type* pointer = new type; // delete pointer;

数组申请:type* pointer = new[] type; // delete[] pointer; 

 

new 关键字与malloc 函数的区别:new关键字是c++的一部分,malloc是由c库提供的函数new以具体类型为单位进行内存分配,malloc只能以字节为单位进行内存分配,new在申请单个类型变量时可进行初始化,malloc不具备内存初始化的特性。

 

C++中的命名空间

c中只有一个全局作用域,c中所有全局标识符共享同一个作用域,标识符之间可能发生冲突,c++中提出了命名空间的概念:命名空间将全局作用域分成不同的部分,不同命名空间中的标识符可以同名而不发生冲突,命名空间可以相互嵌套,全局作用域也叫默认命名空间。

 

C++命名空间的使用:

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

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

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

默认情况下可以直接使用默认命名空间中的所有标识符。

 

C方式的强制类型转换存在问题:任意类型之间都可以进行转换,编译器很难判断正确性,在源码中无法快速定位所有使用强制类型转换的语句,在程序设计理论中强制类型转换是不被推荐的,与goto语句一样应该尽量避免。

强制类型转换在实际工程中还是可能使用的:

C++将强制类型转换分为4种不同的类型static_cast\const_cast\dynamic_cast\reinterpret_cast

用法:xxx_cast(expression)

Static_cast用于基本类型的转换,但不能用于基本类型指针间的转换,用于有继承关系类对象之间的转换和类指针之间的转换,static_cast是编译期进行转换的,无法再运行时检测类型,所以类型间的转换可能存在风险。

Const_cast 用于去除变量的const属性。

Reinterpret_cast用于指针类型间的强制转换,用于整数和指针类型间的强制转换。

Dynamic_cast主要用于类层次间的转换,还可以用于类之间的交叉转换

阅读(1178) | 评论(0) | 转发(0) |
0

上一篇:函数升级

下一篇:第一阶段答疑

给主人留下些什么吧!~~