
C++
一木一林为森
我将玫瑰藏于身后,期盼随时与你赴约。
展开
-
每日一题 | 13
说说什么是野指针,怎么产生的,如何避免?1、概念:野指针就是指针指向的位置是不可知的(随机的、不正确的、没有明确限制的)2、产生原因:释放内存后指针不及时置空(野指针),依然指向了该内存,那么可能出现非法访问的错误。这些我们都要注意避免。3、避免办法:(1)初始化置NULL(2)申请内存后判空(3)指针释放后置NULL(4)使用智能指针注:产生原因:释放内存后指针不及时置空(野指针),依然指向了该内存,那么可能出现非法访问的错误。这些我们都要注意避免。如:char *p = (char原创 2021-06-27 21:28:02 · 170 阅读 · 0 评论 -
每日一题 | 12
nullptr调用成员函数可以吗?为什么?能。原因:因为在编译时对象就绑定了函数地址,和指针空不空没关系。注://给出实例class animal{public: void sleep(){ cout << "animal sleep" << endl; } void breathe(){ cout << "animal breathe haha" << endl; }};class fish :public animal{p原创 2021-06-27 21:23:34 · 326 阅读 · 0 评论 -
每日一题 | 11
说说静态变量什么时候初始化?对于C语言的全局和静态变量,初始化发生在任何代码执行之前,属于编译期初始化。而C++标准规定:全局或静态对象当且仅当对象首次用到时才进行构造。注:1、作用域:C++里作用域可分为6种:全局,局部,类,语句,命名空间和文件作用域。静态全局变量 :全局作用域+文件作用域,所以无法在其他文件中使用。静态局部变量 :局部作用域,只被初始化一次,直到程序结束。类静态成员变量:类作用域。2、所在空间:都在静态存储区。因为静态变量都在静态存储区,所以下次调用函数的时候还是能取到原创 2021-06-27 21:16:47 · 202 阅读 · 0 评论 -
每日一题 | 10
说说什么是函数指针,如何定义函数指针,有什么使用场景1、概念:函数指针就是指向函数的指针变量。每一个函数都有一个入口地址,该入口地址就是函数指针所指向的地址。2、定义形式如下:int func(int a); int (*f)(int a); f = &func; 3、函数指针的应用场景:回调(callback)。我们调用别人提供的 API函数(Application Programming Interface,应用程序编程接口),称为Call;如果别人的库里面调用我们的函数,就原创 2021-06-26 15:54:16 · 139 阅读 · 0 评论 -
每日一题 | 9
说说数组和指针的区别1、概念:(1)数组:数组是用于储存多个相同类型数据的集合。 数组名是首元素的地址。(2)指针:指针相当于一个变量,但是它和不同变量不一样,它存放的是其它变量在内存中的地址。 指针名指向了内存的首地址。2、区别:(1)赋值:同类型指针变量可以相互赋值;数组不行,只能一个一个元素的赋值或拷贝(2)存储方式: 数组:数组在内存中是连续存放的,开辟一块连续的内存空间。数组是根据数组的下进行访问的,数组的存储空间,不是在静态区就是在栈上。 指针:指针很灵活,它可以指向任意类型原创 2021-06-26 15:44:22 · 178 阅读 · 0 评论 -
每日一题 | 8
说说 static关键字的作用1、定义全局静态变量和局部静态变量:在变量前面加上static关键字。初始化的静态变量会在数据段分配内存,未初始化的静态变量会在BSS段分配内存。直到程序结束,静态变量始终会维持前值。只不过全局静态变量和局部静态变量的作用域不一样;2、定义静态函数:在函数返回类型前加上static关键字,函数即被定义为静态函数。静态函数只能在本源文件中使用;3、在变量类型前加上static关键字,变量即被定义为静态变量。静态变量只能在本源文件中使用;4、在c++中,static关键字可原创 2021-06-26 15:37:14 · 180 阅读 · 3 评论 -
每日一题 | 7
简述C++从代码到可执行二进制文件的过程C++和C语言类似,一个C++程序从源码到执行文件,有四个过程,预编译、编译、汇编、链接。注:1、预编译:这个过程主要的处理操作如下:(1) 将所有的#define删除,并且展开所有的宏定义(2) 处理所有的条件预编译指令,如#if、#ifdef(3) 处理#include预编译指令,将被包含的文件插入到该预编译指令的位置。(4) 过滤所有的注释(5) 添加行号和文件名标识。2、编译:这个过程主要的处理操作如下:(1) 词法分析:将源代码的字符序列原创 2021-06-26 15:32:29 · 142 阅读 · 0 评论 -
每日一题 | 6
导入C函数的关键字是什么,C++编译时和C有什么不同?1、关键字:在C++中,导入C函数的关键字是extern,表达形式为extern “C”, extern "C"的主要作用就是为了能够正确实现C++代码调用其他C语言代码。加上extern "C"后,会指示编译器这部分代码按C语言的进行编译,而不是C++的。2、编译区别:由于C++支持函数重载,因此编译器编译函数的过程中会将函数的参数类型也加到编译后的代码中,而不仅仅是函数名;而C语言并不支持函数重载,因此编译C语言代码的函数时不会带上函数的参数类型原创 2021-06-26 15:26:14 · 112 阅读 · 0 评论 -
每日一题 | 5
说说C++结构体和C结构体的区别区别:(1)C的结构体内不允许有函数存在,C++允许有内部成员函数,且允许该函数是虚函数。(2)C的结构体对内部成员变量的访问权限只能是public,而C++允许public,protected,private三种。(3)C语言的结构体是不可以继承的,C++的结构体是可以从其他的结构体或者类继承过来的。(4)C 中使用结构体需要加上 struct 关键字,或者对结构体使用 typedef 取别名,而 C++ 中可以省略 struct 关键字直接使用。注:1、C+原创 2021-06-26 15:20:52 · 75 阅读 · 0 评论 -
每日一题 | 4
说说include头文件的顺序以及双引号""和尖括号<>的区别1、区别:(1)尖括号<>的头文件是系统文件,双引号"“的头文件是自定义文件。(2)编译器预处理阶段查找头文件的路径不一样。2、查找路径:(1)使用尖括号<>的头文件的查找路径:编译器设置的头文件路径–>系统变量。(2)使用双引号”"的头文件的查找路径:当前头文件目录–>编译器设置的头文件路径–>系统变量。...原创 2021-06-26 15:07:20 · 108 阅读 · 0 评论 -
每日一题 | 3
说说 C++中 struct 和 class 的区别1、struct 一般用于描述一个数据结构集合,而 class 是对一个对象数据的封装;2、struct 中默认的访问控制权限是 public 的,而 class 中默认的访问控制权限是 private 的;3、在继承关系中,struct 默认是公有继承,而 class 是私有继承;4、class 关键字可以用于定义模板参数,就像 typename,而 struct 不能用于定义模板参数,例如:template<typename T, ty原创 2021-06-26 14:59:04 · 121 阅读 · 0 评论 -
每日一题 | 2
说说C语言和C++的区别1、C语言是C++的子集,C++可以很好兼容C语言。但是C++又有很多新特性,如引用、智能指针、auto变量等。2、C++是面对对象的编程语言;C语言是面对过程的编程语言。3、C语言有一些不安全的语言特性,如指针使用的潜在危险、强制转换的不确定性、内存泄露等。而C++对此增加了不少新特性来改善安全性,如const常量、引用、cast转换、智能指针、try—catch等等;4、C++可复用性高,C++引入了模板的概念,后面在此基础上,实现了方便开发的标准模板库STL。C++的S原创 2021-06-26 14:50:32 · 137 阅读 · 0 评论 -
每日一题 | 1
简述下C++语言的特点1、C++在C语言基础上引入了面对对象的机制,同时也兼容C语言。2、C++有三大特性(1)封装。(2)继承。(3)多态;3、C++语言编写出的程序结构清晰、易于扩充,程序可读性好。4、C++生成的代码质量高,运行效率高,仅比汇编语言慢10%~20%;5、C++更加安全,增加了const常量、引用、四类cast转换(static_cast、dynamic_cast、const_cast、reinterpret_cast)、智能指针、try—catch等等;6、C++可复用性高原创 2021-06-26 14:44:03 · 121 阅读 · 0 评论