本系列博客为观看51CTO学院王桂林老师“这可能是你见过‘最牛逼的‘c++教程’”视频学习C++基础知识时所作的学习笔记,在此对教程作者王桂林老师表示万分感谢。
Day1知识点:
1. C++中比C中多了两种类型,string和bool;
2. C中用非常量指针解引用可以间接改变const的值,而C++中不能用;
3. C++中表达式可以被赋值,C中不能;
4. cin cout 类对象, scanf sprint 函数;
5. C++中可以进行函数重载,C中不能;
6. C++中函数与头文件都要参加倾轧,C中不参加倾轧,用extern C来对函数的声明与函数体进行倾轧,在C++中使用C库要全部倾轧;
7. 运算符重载:类型 operator符号 参数 函数
运算符重载的初步:
Complex operator+(Complex a,Complex b)
{
Complex c;
c.real = a.real + b.real;
c.image = c.image + b.image;
return c;
}
8. 默认参数:
void weathercast(string w= “pm2.5”); //当调用时不传参数时自动传送默认参数,如 weathercast();
如有多个默认参数时必须从右往左默认,中间不允许跳跃,如
int volumn(int l , int w = 4 , int h = 5);
如果出现默认参数与函数重载情况,要注意以下情况:
void print(int a){};
void print(int a,int b = 10){}; //如使用print();可能会出现二义性问题,不推荐使用
如果出现定义在后,声明在前,默认参数写在在声明中而不是在定义中。
9. 对变量的赋值的理解:int a = 500等价于*(int *)0xb0002345 = 500,a是对一段内存空间的引用。
引用:
1)引用声明时必须初始化,不分配内存空间。
2)可以对引用再次引用。
int&ra = a;
int& rra = ra; //但是不能建立引用的引用,int&&
3)可以建立指针的引用int* ->int*&,不能建立引用的指针int & ->int &*
4)可以定义指针数组,不能定义引用数组,但可定义数组引用int (&rarr)[5] = arr;
10.
1)const 对象的引用必须是const 的,将普通引用绑定到 const 对象是不合法的:
const int a=1; int &b=a; //这种写法是不合法的,编译不过
2)const 引用可使用相关类型的对象来进行初始化,如:
常量
const int &a=2;
非同类型的变量
double a=3.14;const int&b=a; //实现方法是建立一个中间变量int temp = a;const int&b = temp
表达式
const int &a=2+c;
3)在不改变变量的情况下尽可能使用const。
1,使用 const 可以避免无意修改数据的编程错误。
2,使用 const 可以处理 const 和非const 实参。否则将只能接受非 const 数据。
3,使用 const 引用,可使函数能够正确的生成并使用临时变量(如果实参与引用参数不匹配,就会生成临时变量)
11. 引用的本质是,是对常指针 type * const p 的再次包装。所以定义引用的时候必须初始化。