c++基础学习5-c++新关键字
来源:互联网 发布:linux驱动开发详解 4 编辑:程序博客网 时间:2024/06/03 20:59
1,动态内存分配
c++中通过new关键字进行动态申请内存,用delete释放内存。
在c++中这两个关键字是内置于语言里面的,而不是像c里面由库函数提供的
这是c++中的动态内存分配首先给变量分配,然后在给数组分配空间,并用delete释放空间
new关键字与malloc函数的区别是什么呢?
new关键字是c++的一部分,malloc是由c库函数提供的函数。
new以具体类型为单位进行内存分配,malloc只能以字节为单位进行内存分配
new在申请单个类型变量时可进行初始化,malloc不具备内存初始化的特性。
2,c++中的命名空间
在c语言中只有一个全局作用域
1,c语言中所有的全局标识符共享同一个作用域。
2,标示符之间可能发生冲突
如何处理这两个问题呢?
在c++中提出了命名空间的概念。
在命名空间中,不同命名空间中的标识符可以同名而不会发生冲突。
命名空间可以相互嵌套
命名空间以关键字namespace 命名空间,如果需要使用整个名称空间的话需要
using namespace xxx
使用名称空间的变量的话:using name::variable
使用默认名称空间变量的: ::variable
3,强制类型转换
讲解强制类型转换,首先说明c的类型转换 (类型)(变量或表达式)
那么c中的类型转换有什么问题呢?
1,任意类型之间都可以转换,编译器容易判断错误。
2,在源代码中无法快速找到所有强制类型转换的语句,因为c语言中的强制类型转换有多中,比如:
(char)n char(n) int(n) (int)n 根本无法直接找到是那种语句
c++中提供了四种强制类型转换
1,static_cast 2,const_cast 3,dynamic_cast 4,reinterpret_cast
c++用这四种类型的强制类型转换
第一种static_cast 用于基本类型之间的转换,但不能用于基本类型指针间的转换。
第二种const_cast用于去除变量的const属性。
第三种dynamic_cast用于类层次间的转换,还可以用于类之间的交叉转换,并且具有检查类型的功能,比static_cast更安全
第四种reinterpret_cast用于指针间的强制类型转换,用于整数和指针间的强制类型转换
- c++基础学习5-c++新关键字
- C基础-关键字
- 开始学习C#-------》关键字
- IOS学习之二:Objective-C基础语法和关键字
- IOS学习之二:Objective-C基础语法和关键字
- c/c++基础数据类型 关键字
- C学习之一:static关键字
- C#:params 关键字的学习
- C#:params 关键字的学习
- C语言学习之关键字
- 【学习】C语言中的关键字
- 继续学习:C语言关键字
- 学习C中volatile关键字
- C语言关键字学习总结
- C语言再学习--关键字
- C/C++ register关键字学习
- C语言再学习--关键字
- IOS学习---C语言基础学习5
- Hibernate查询之SQL查询
- 浏览器获取宽高
- UVa 327 计算简单C表达式
- 关于xcode6位置变化
- 根据Request获取客户端IP
- c++基础学习5-c++新关键字
- 大牛工程师应该掌握的20 个模拟电路
- Adding a Single Task to a Queue
- git 技巧
- Fatal error: The slave I/O thread stops because master and slave have equal MySQL server ids;
- TYVJ P1924 - [Poetize II]七夕祭
- Dialog背景自绘 大小改变 原来图像残留
- 线程 与 队列 - 学习笔记
- Merge k Sorted Lists