本文主要是介绍C++语言对C语言的扩充,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
1.新的数据类型bool2.新的变量初始化方法,int x(1024);等价于int x = 1024;
3.变量随用随定义
4.IO方法,不用关注占位符,不用关注数据类型,不易出错。下面的几幅图展示了这种区别。
5.命名空间namespace
目的:解决标识符冲突,相当于Java中的package6.引用类型
1)普通变量的引用
int a = 3;
int &b = a; // 引用必须初始化,且初始化以后不能再改变,其本质是常指针
b = 10;
效果:a与b指向同一块内存空间,a的值变成了102)结构体的引用
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++语言对C语言的扩充的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!