写在前面:当要找工作时,发现对于面试中问的问题总有种朦朦胧胧的熟悉感,但让自己说时又不能说出个所以然来,归根结底,还是太菜了;记性不好,还是把比较重要的知识点记下来,常看看吧。
C++语言简介
c++是在c语言的基础上开发出的一种面向对象的编程语言,c++支持多种编程范式,包括面向对象编程、泛型编程、过程化编程。c++应用广泛,常应用于系统、引擎等开发领域。
面向对象
从实体上抽象出我们需要的属性及行为。
对于其三大基本特征封装、继承、多态,我想是大概是在一定程度上增加了程序的安全性、复用性及灵活性吧。
C++与C的区别
主要区别在于 c++ 在 c 语言的基础上增加了类的概念,这一点可以从 c++ 早前的名字 c with classes 中看出。再者,c++ 相比 c 语言引入了更多的特性,例如命名空间、模板与泛型编程特性。
#define、const
- #define:预编译指令,可用来定义一个常量。
- const:是c和c++中的关键字,用来声明一个常量(不可改变的变量),const可在一定程度上提高程序的安全性及可靠性;const可用来修饰基本数据类型、指针和引用;当const修饰指针时,要搞明白被修饰的是指针本身,还是指针指向的变量,例如:
int t1 = 1, t2 = 2;
const int *p1 = &t1; //指针常量
int const *p2 = &t1; //指针常量(p1与p2效果相同)
//*p2 = 3; (错误) //不允许修改 指针指向的变量 的值
p2 = &t2; //允许修改 指针 的值
int *const p3 = &t1; //常量指针
*p3 = 3; //允许修改 指针指向的变量 的值
//p3 = &t2; (错误) //不允许修改 指针 的值
使用const修饰的函数,只能调用const修饰的函数,普通函数能调用const修饰的函数。
使用const修饰的成员函数,表示在该函数中不会对对象进行改变。
static的作用
在c++中,static会修改所修饰标识符的链接属性,由external(外部的)变为internal(内部的);
即该标识符只能在其所处的文件中起作用。
补充:
- 另一个链接属性 none:总是被当做单独的个体,也就是说该标识符的多个声明被当作独立不同的实体。
- extern:声明一个全局变量,作用范围是整个工程。
关于变量的声明与定义
声明(引用性声明):声明一个变量时并没有为该变量分配内存空间,它只是告诉编译器,
该变量会在某处进行定义。
定义(定义性声明):声明一个变量的同时也为其分配储存空间。
声明一个变量
extern int A;
或 extern A;
定义一个变量
int A;
1.对于全局静态变量而言,可将该变量的作用域理解为从其所在文件开头,到其所在文件的结尾。
全局静态变量被储存在全局静态区
2.局部静态变量,作用域不变,只是在离开作用域后,局部静态变量并未被销毁,当再次进入该作用域时,它的值也和上次一样。
全局静态变量也被储存在全局静态区
关于内存五区
栈区、堆区、静态区、常量区、代码区
花费碎片时间,将搞懂的知识点写下来,未完待续。。。