1、前言
本博文记录学习C++的知识点和一些自己的总结
目前开发环境:VS
最终项目开发环境:QT
参考学习资料:慕课网 james_yuan 的C++远征系列 之C++远征起航篇
2、知识点
2.1 C与C++的关系
C是C++的子集,C++是从C的基础上发展而来的,C语言是面向过程的,C++支持面向过程和面向对象。
2.2 命名空间namespace
不同函数库中的变量、函数用同样的名字命名,运用命名空间的目的就是进行区分。
namespace A {
int x = 1;
void fun() {
//to do
}
}
namespace B {
int x = 1;
void fun() {
//to do
}
}
int main(void) {
cout << A::x << endl;
B::fun();
return 0;
}
2.3引用
//基本类型引用
int a;
int &b = a;
//结构体类型引用
Coor c1;
Coor &c = c1;
//指针类型引用
类型 ×&指针引用名 = 指针;
int a = 5;
int *p = &a;
int *&q = p;
//引用作函数参数
void fun(int &a,int &b){
int c = 0;
c = a;
a = b;
b =c;
}
int x = 10,y = 20;
fun(x,y)
别名&b和a是同一个变量,可以通过修改别名的值,进而修改变量的值。
2.4 const
const : 控制变化
使用了const之后,内存中存储的值不可改变
x的值不可以再变
const int x = 3;
指针
int x = 3;
const int *p = &3;
// p = &y; 正确
//*p = 4; 错误
2.5 函数特性
1、函数默认值
void fun(int,int y =5,int z = 8 ){
//有默认值的参数必须在参数表的最右端
//to do
}
2、函数重载
在相同作用域内
同意函数名定义多个函数
参数个数和参数类型不同
getMax(int a, int b)
getMax(double a , double b)
3、内联函数
编译时将函数体代码和实参代替函数调用语句
关键字 inline
效率高,逻辑简单,不能使用for、while循环
2.6 内存管理
申请内存不一定会成功哦,需要判断
//指针内存
int *p new int;
delete p;
p = NULL;
//块内存
int *arr = new int[10];
delete [ ] arr;
p =NULL;