C++语言对C语言的扩充
2016-04-22 19:08
330 查看
1.新的数据类型bool
2.新的变量初始化方法,int x(1024);等价于int x = 1024;
3.变量随用随定义
4.IO方法,不用关注占位符,不用关注数据类型,不易出错。下面的几幅图展示了这种区别。
5.命名空间namespace
目的:解决标识符冲突,相当于Java中的package
6.引用类型
1)普通变量的引用
int a = 3;
int &b = a; // 引用必须初始化,且初始化以后不能再改变,其本质是常指针
b = 10;
效果:a与b指向同一块内存空间,a的值变成了10
2)结构体的引用
typedef struct{
int x;
int y;
}Point;
Point p1;
Point &p = p1;
p.x = 10;
p.y = 20;
cout<<p1.x<<p1.y<<endl;
结果:10 20
3)指针类型的引用
int a = 10;
int *p = &a;
int *&q = p;
*q = 20;
cout<<a<<endl;
结果:a = 20
7.const关键字
1)const与基本数据类型
const int x = 3;
x = 5; // 错误,x不可改变
2)const与指针类型
const int *p = NULL;等价于int const *p = NULL;
int *const p =NULL;
此时const还有各种用法,个人感觉这块C++太麻烦了!各大IT公司笔试老是喜欢这么搞!
const char *pc = "abcd"; // 声明指向常量的指针变量pc,它指向一个字符串常量
pc[3] = 'x'; // 不合法
pc = "efgh"; // 合法
char* const pc = "abcd"; // 常指针
pc[3] = 'x'; // 合法
pc = "efgh"; // 不合法
const char* const pc = "abcd"; // 指向常量的常指针
pc[3] = 'x'; // 不合法
pc = "efgh"; // 不合法
3)const与函数形参
const修饰函数形参,用于保证实参在该函数内部不被改动
8.函数新特性
1)函数参数默认值
void fun(int i,int j = 5,int k = 10);
void fun(int i,int j = 5;int k); // 错误
有默认参数值的参数必须在参数表的最右端
2)函数重载
在同一个作用域下,函数名相同,但是参数个数、参数类型或者参数顺序不同的函数之间叫重载
3)内联函数
内联函数关键字:inline
调用时执行代码替换,执行效率高,但是是有条件的
9.内存管理
申请内存用运算符new,释放内存用运算符delete
例:
int *p = new int;
*p = 5; // 可以合在一起,int *p = new int(5);
delete p;
int *arr = new int[10]; // 申请块内存
delete []arr; // 释放块内存
注意:申请内存要判断是否成功,释放内存要设空指针
int *arr = new int[1024];
// 一定要判断一下
if(arr == NULL){
// 分配失败
}else{
delete []arr;
arr = NULL; // 一定要有,否则误操作以后,后果很严重
}
10.提供了字符串处理类string,注意区分于Java中的String类
2.新的变量初始化方法,int x(1024);等价于int x = 1024;
3.变量随用随定义
4.IO方法,不用关注占位符,不用关注数据类型,不易出错。下面的几幅图展示了这种区别。
5.命名空间namespace
目的:解决标识符冲突,相当于Java中的package
6.引用类型
1)普通变量的引用
int a = 3;
int &b = a; // 引用必须初始化,且初始化以后不能再改变,其本质是常指针
b = 10;
效果:a与b指向同一块内存空间,a的值变成了10
2)结构体的引用
typedef struct{
int x;
int y;
}Point;
Point p1;
Point &p = p1;
p.x = 10;
p.y = 20;
cout<<p1.x<<p1.y<<endl;
结果:10 20
3)指针类型的引用
int a = 10;
int *p = &a;
int *&q = p;
*q = 20;
cout<<a<<endl;
结果:a = 20
7.const关键字
1)const与基本数据类型
const int x = 3;
x = 5; // 错误,x不可改变
2)const与指针类型
const int *p = NULL;等价于int const *p = NULL;
int *const p =NULL;
此时const还有各种用法,个人感觉这块C++太麻烦了!各大IT公司笔试老是喜欢这么搞!
const char *pc = "abcd"; // 声明指向常量的指针变量pc,它指向一个字符串常量
pc[3] = 'x'; // 不合法
pc = "efgh"; // 合法
char* const pc = "abcd"; // 常指针
pc[3] = 'x'; // 合法
pc = "efgh"; // 不合法
const char* const pc = "abcd"; // 指向常量的常指针
pc[3] = 'x'; // 不合法
pc = "efgh"; // 不合法
3)const与函数形参
const修饰函数形参,用于保证实参在该函数内部不被改动
8.函数新特性
1)函数参数默认值
void fun(int i,int j = 5,int k = 10);
void fun(int i,int j = 5;int k); // 错误
有默认参数值的参数必须在参数表的最右端
2)函数重载
在同一个作用域下,函数名相同,但是参数个数、参数类型或者参数顺序不同的函数之间叫重载
3)内联函数
内联函数关键字:inline
调用时执行代码替换,执行效率高,但是是有条件的
9.内存管理
申请内存用运算符new,释放内存用运算符delete
例:
int *p = new int;
*p = 5; // 可以合在一起,int *p = new int(5);
delete p;
int *arr = new int[10]; // 申请块内存
delete []arr; // 释放块内存
注意:申请内存要判断是否成功,释放内存要设空指针
int *arr = new int[1024];
// 一定要判断一下
if(arr == NULL){
// 分配失败
}else{
delete []arr;
arr = NULL; // 一定要有,否则误操作以后,后果很严重
}
10.提供了字符串处理类string,注意区分于Java中的String类
相关文章推荐
- 使用C++实现JNI接口需要注意的事项
- 关于指针的一些事情
- c++ primer 第五版 笔记前言
- share_ptr的几个注意点
- Lua中调用C++函数示例
- Lua教程(一):在C++中嵌入Lua脚本
- Lua教程(二):C++和Lua相互传递数据示例
- C++联合体转换成C#结构的实现方法
- C++高级程序员成长之路
- C++编写简单的打靶游戏
- C++ 自定义控件的移植问题
- C++变位词问题分析
- C/C++数据对齐详细解析
- C++基于栈实现铁轨问题
- C++中引用的使用总结
- 使用Lua来扩展C++程序的方法
- C++中调用Lua函数实例
- Lua和C++的通信流程代码实例
- C与C++之间相互调用实例方法讲解
- 解析C++中派生的概念以及派生类成员的访问属性