C++合集
文章平均质量分 60
静香是个程序媛
越努力越幸运,用程序改变世界。
展开
-
C++基础知识点整理笔记(六)
19. 头文件中的ifndef/define/endif有什么作用这是C++预编译头文件保护符,保证即使文件被多次包含,头文件也只定义一次。20. #include<file.h> 与 #include "file.h"的区别前者是从标准库路径寻找和引用file.h 后者是从当前工作路径搜寻并引用file.h21. 智能指针智能指针:C++内存管理是一个令人很头疼的事情,尽管每次写完new都会写一个delete,但是如果程序还没有执行到delete的时候就跳转了或者函数返回了原创 2023-02-02 11:09:44 · 477 阅读 · 0 评论 -
C++基础知识点整理笔记(五)
尽管内存是以字节为单位的,但是大部分处理器并不是以字节来存取数据,一般会以四字节、八字节或更长的单位来取内存。使用内存对齐可以保证每次取内存都是访问块内存地址首部以提高存取效率。14. 类中 private,protect,public 三种访问限制类型的区别。结构体:将不同类型的数据组合成一个整体,是自定义类型。16. 什么是内存对齐?字节对齐的规则是什么?共同体:不同类型的几个变量共同占用一段内存。17. #define和const的区别。18. 指针和引用的区别。原创 2023-02-01 11:29:01 · 383 阅读 · 0 评论 -
C++基础知识点整理笔记(四)
内存泄漏是指己动态分配的堆内存由于某种原因程序未释放或无法释放,造成系统内存的浪费,导致程序运行速度减慢甚至系统崩溃等严重后果。在C++中,内存被分成五个区:栈、堆、自由存储区、静态存储区、常量区。12. new、delete、malloc、free之间的关系。13. delete和delete[]的区别。11. C++中内存泄漏的几种情况。10. C++的内存管理。原创 2023-02-01 11:28:53 · 475 阅读 · 1 评论 -
C++基础知识点整理笔记(三)
8. 在C++ 程序中调用被C 编译器编译后的函数,为什么要加extern “C”9. vs调试和gdb调试。7. C++11的新特性。原创 2023-01-31 11:10:16 · 336 阅读 · 0 评论 -
C++基础知识点整理笔记(二)
(二) 封装:将低层次的元素组合起来形成新的、更高实体的技术,隐藏了实现细节,使得代码模块化。(四) 多态:“一个接口,多种实现”,通过派生类重写父类的虚函数,实现了接口的重用。(三) 继承:通过派生类继承父类的数据和方法,扩展已经存在的模块,实现代码重用。(一) 基本概念:类、对象、继承;基本特征:封装、继承、多态。4. 静态链接、动态链接具体做了什么。6. 面向对象技术的基本概念与特征。3. gcc 和 g++的区别。5. C和C++的区别。原创 2023-01-31 11:09:44 · 346 阅读 · 0 评论 -
C++基础知识点整理笔记(一)
到底还是C++基础知识太薄弱了,没有系统的去学习过,都是碰到问题了才去查原因,有需求了才去查解决方案,虽然能够搞定手头问题,但是对C++的理解却始终浮于表面,后面将会分两到三篇文章对C++的基础知识点进行梳理,然后结合几个框架,逐步跟大家分享和探讨构建一个全流程的深度学习框架过程中涉及到的一些知识点。(二) 编译阶段:gcc –S hello.i –o hello.s。(三) 汇编阶段:gcc –c hello.s –o hello.o。(四) 链接阶段:gcc hello.o –o hello。原创 2023-01-30 12:14:11 · 3294 阅读 · 3 评论 -
稿最全,面中率最高,C++经典面试题(八)
如果用 ifndef 包含某一段宏定义,当这个宏名字出现“撞车”时,可能会出现这个宏在程序中提示宏未定义的情况(在编写大型程序时特性需要注意,因为有很多程序员在同时写代码)。相反由于program once 针对整个文件, 因此它不存在宏名字“撞车”的情况, 但是如果某个头文件被多次拷贝,program once 无法保证不被多次包含,因为program once 是从物理上判断是不是同一个头文件,而不是从内容上。栈内存分配运算内置于处理器的指令集中,效率很高,但是分配的内存容量有限。原创 2023-01-30 12:13:39 · 326 阅读 · 0 评论 -
最全,面中率最高,C++经典面试题(七)
fp3是一个指针,指向一个函数,这个函数的参数为空,函数的返回值是一个指针,这个指针指向一个数组,这个数组有10个元素,每个元素是一个指针,指向一个函数,这个函数的参数为空,函数的返回值是int型。fp2是一个指针,指向一个函数,这个函数的参数为3个int型,函数的返回值是一个指针,这个指针指向一个函数,这个函数的参数为int型,函数的返回值是float型。1) 引用必须被初始化,指针不必。原创 2023-01-29 12:07:47 · 854 阅读 · 0 评论 -
最全,面中率最高,C++经典面试题(六)
sizeof(p),p 为指针得到的是一个指针变量的字节数,而不是p 所指的内存容量。原创 2023-01-29 12:06:26 · 430 阅读 · 0 评论 -
最全,面中率最高,C++经典面试题(五)
程序在运行的时候用malloc 或new 申请任意多少的内存,程序员自己负责在何时用free 或delete 释放内存。在执行函数时,函数内局部变量的存储单元都可以在栈上创建,函数执行结束时这些存储单元自动被释放。被Const修饰的东西都受到强制保护,可以预防意外的变动,能提高程序的健壮性。内存在程序编译的时候就已经分配好,这块内存在程序的整个运行期间都存在。2) 有些集成化的调试工具可以对const 常量进行调试,但是不能对宏常量进行调试。答案:全局对象的构造函数会在main 函数之前执行。原创 2023-01-28 18:26:25 · 470 阅读 · 0 评论 -
最全,面中率最高,C++经典面试题(四)
重载:编译器根据函数不同的参数表,对同名函数的名称做修饰,然后这些同名函数就成了不同的函数(至少对于编译器来说是这样的)。重写:和多态真正相关。当子类重新定义了父类的虚函数后,父类指针根据赋给它的不同的子类指针,动态的调用属于子类的该函数,这样的函数调用在编译期间是无法确定的(调用的子类的虚函数的地址无法给出)。(1). 结构和联合都是由多个不同的数据类型成员组成, 但在任何同一时刻, 联合中只存放了一个被选中的成员(所有成员共用一块地址空间), 而结构的所有成员都存在(不同成员的存放地址不同)。原创 2023-01-28 18:26:09 · 556 阅读 · 0 评论 -
最全,面中率最高,C++经典面试题(三)
但是对于返回一个流对象,程序必须重新(拷贝)构造一个新的流对象,也就是说,连续的两个原创 2023-01-27 22:44:53 · 134 阅读 · 0 评论 -
最全,面中率最高,C++经典面试题(二)
声明一个引用,不是新定义了一个变量,它只表示该引用名是目标变量名的一个别名,它本身不是一种数据类型,因此引用本身不占存储单元,系统也不给引用分配存储单元。不能建立数组的引用。(3)使用指针作为函数的参数虽然也能达到与使用引用的效果,但是,在被调函数中同样要给形参分配存储单元,且需要重复使用"*指针变量名"的形式进行运算,这很容易产生错误且程序的阅读性较差;这时,被调函数的形参就成为原来主调函数中的实参变量或对象的一个别名来使用,所以在被调函数中对形参变量的操作就是对其相应的目标对象(在主调函数中)的操作。原创 2023-01-27 22:44:23 · 110 阅读 · 0 评论 -
最全,面中率最高,C++经典面试题(一)
delete[]会调用数组元素的析构函数。如果你在用delete时没用括号,delete就会认为指向的是单个对象,否则,它就会认为指向的是一个数组。delete只会调用一次析构函数,而delete[]会调用每一个成员的析构函数。在More Effective C++中有更为详细的解释:“当delete操作符用于数组时,它为每个数组元素调用析构函数,然后调用operator delete来释放内存。析构函数调用的次序是先派生类的析构后基类的析构,也就是说在基类的的析构调用的时候,派生类的信息已经全部销毁了。原创 2023-01-26 07:35:02 · 904 阅读 · 2 评论 -
C++入门基础知识笔记整理(五)
以inline修饰的函数叫做内联函数,编译时C++编译器会在,没有函数压栈的开销,内联函数提升程序运行的效率。(看到在加粗部分时,小伙伴肯定会想,这和c语言中的宏是不是很像了?如果在上述函数前增加inline关键字将其改成内联函数,在编译期间编译器会用函数体替换函数的调用2、特性c++有哪些技术可以代替宏常量定义 换用const函数定义 换用内联函数。原创 2023-01-18 09:27:56 · 82 阅读 · 0 评论 -
C++入门基础知识笔记整理(四)
所以在引用做函数返回值时最好还是给在函数中定义的变量加上static。这时你觉得你真的懂这段代码了吗?可能你会好奇了?为什么这儿是3了?下面来看看分析其实你换种写法,这儿的结果就会换成7,原因也很简单,正是上面图片中说的原因注意:如果函数返回时,出了函数作用域,返回对象还未还给系统,则可以使用引用返回;如果已经还给系统了,则必须使用传值返回。这句话说的是下面这种例子:大家是不是感觉这个传引用返回用起来很怪了,下面我们来分析一下它是如何返回的。总结:原创 2023-01-18 09:27:49 · 92 阅读 · 0 评论 -
C++入门基础知识笔记整理(三)
在C语言中有标准输入输出函数scanf和printf,而在C++中有cin标准输入和cout标准输出。在C语言中使用scanf和printf函数,需要包含头文件stdio.h。在C++中使用cin和cout,需要包含头文件iostream以及std标准命名空间。C++的输入输出方式与C语言更加方便,因为C++的输入输出不需要控制格式,例如:整型为%d,字符型为%c。注意:endl,这其中的l不是阿拉伯数字1,而是26个英文字母的l,它的作用相当于换行。原创 2023-01-17 09:22:27 · 188 阅读 · 0 评论 -
C++入门基础知识笔记整理(二)
在C/C++中,变量、函数和类都是大量存在的,这些变量、函数和类的名称都将作用于全局作用域中,可能会导致很多命名冲突。原创 2023-01-17 09:22:10 · 98 阅读 · 0 评论 -
C++入门基础知识笔记整理(一)
1982年,Bjarne Stroustrup博士在C语言的基础上引入并扩充了面向对象的概念,发明了一种新的程序语言。为了表达该语言与C语言的渊源关系,命名为C++。因此:C++是基于C语言而产生的,它既可以进行C语言的过程化程序设计,又可以进行以抽象数据类型为特点的基于对象的程序设计,还可以进行面向对象的程序设计。原创 2023-01-16 09:59:44 · 92 阅读 · 0 评论 -
C++入门基础知识笔记整理(六)
在良好的C/C++编程习惯中,在声明一个变量的同时最好给该变量一个合适的初始值,否则可能会出现不可预料的错误。注:在C++98中字面常量0,既可以是一个整型数字,也可以是无类型的指针(void*)常量,但编译器默认情况下将其看成是一个整型常量,如果要将其按照指针方式来使用,必须对其进行强制转换。程序本意本意是想通过Fun(NULL)调用指针版本的Fun(int* p)函数,但是由于NULL被定义为0,Fun(NULL)最终调用的是Fun(int p)函数。方法,begin和end就是for循环迭代的范围。原创 2023-01-19 09:17:29 · 82 阅读 · 0 评论