
c++知识
文章平均质量分 85
超级无敌陈大佬的跟班
站在巨人的肩膀上看星星.
不辜负每个朝阳,不荒废每个深夜,因平凡而奋斗,因奋斗而不平凡
展开
-
【c++】c++job知识4——第四章 关键字库函数
目录第四章 关键字库函数4.1 sizeof 和 strlen 的区别4.2 lambda 表达式(匿名函数)的具体应用和使用场景4.3 explicit 的作用(如何避免编译器进行隐式类型转换)4.4 static 的作用4.5 static 在类中使用的注意事项(定义、初始化和使用)4.6 static 全局变量和普通全局变量的异同4.7 const 作用及用法4.8 ★define 和 const 的区别4.9 define 和 typedef 的区别4.1原创 2021-05-30 23:57:02 · 713 阅读 · 2 评论 -
【c++】c++job知识3——第三章 面向对象
第三章:面向对象第三章主要针对 C++ 面向对象展开相关的知识点,主要涉及对面向对象的理解、三大特性、多态等知识点。本章中涉及的几个问题面试者在回答的时候,可以了灵活的来回答,例如:结合自己的项目经历进行展开的讲解,说一下在自己的项目中哪里用到了多态、多态是怎么实现的。但是,一定要在准确表述其基本含义后再结合实战经验进行展开。3.1 什么是面向对象?面向对象的三大特性面试高频指数:★★★★★面向对象:对象是指具体的某一个事物,这些事物的抽象就是类,类中包含数据(成员变量)和动作(成员方法)。原创 2021-05-30 23:55:03 · 310 阅读 · 2 评论 -
【c++】C++面试知识2——第二章 语言对比
第二章 语言对比本章主要介绍下编程语言之间的区别,涉及到 C++、Python、Java,并对 C++ 11 的新特性进行了总结。主要考虑到面试时,面试者熟悉 C++ 的同时,或许会对其他语言有一定的了解,那面试官就不可避免的会问到不同语言之间的区别。2.1 C++ 11 新特性面试高频指数:★★★★☆说明:C++11 的新特性有很多,从面试的角度来讲,如果面试官问到该问题,常以该问题作为引子,对面试者提到的知识点进行深入展开提问。面试者尽可能的列举常用的并且熟悉的特性,尽可能的掌握相关原理原创 2021-05-30 23:52:33 · 753 阅读 · 3 评论 -
【c++】c++面试知识7——第七章 设计模式
第七章 设计模式7.1 了解哪些设计模式?面试高频指数:★★★★☆《大话设计模式》一书中提到 24 种设计模式,这 24 种设计模式没必要面面俱到,但一定要深入了解其中的几种,最好结合自己在实际开发过程中的例子进行深入的了解。设计模式有 6 大设计原则:单一职责原则:就一个类而言,应该仅有一个引起它变化的原因。开放封闭原则:软件实体可以扩展,但是不可修改。即面对需求,对程序的改动可以通过增加代码来完成,但是不能改动现有的代码。里氏代换原则:一个软件实体如果使用的是一个基类,那么一定适用于原创 2021-05-30 23:48:37 · 377 阅读 · 4 评论 -
【c++】c++面试知识6——第六章 语言特性相关
第六章 语言特性相关原创 2021-05-29 23:50:06 · 274 阅读 · 3 评论 -
【c++】C++面试知识5——第五章 类相关
第五章 类相关原创 2021-05-29 19:33:44 · 662 阅读 · 1 评论 -
【c++】虚函数微微的深度理解
第五章 类相关原创 2021-05-29 18:52:23 · 502 阅读 · 0 评论 -
【c++】C++job知识1——第一章 编译内存相关
C++ 程序编译过程面试高频指数:★★★★☆编译过程分为四个过程:编译(编译预处理、编译、优化),汇编,链接。编译预处理:处理以 # 开头的指令;编译、优化:将源码 .cpp 文件翻译成 .s 汇编代码;汇编:将汇编代码 .s 翻译成机器指令 .o 文件;链接:汇编程序生成的目标文件,即 .o 文件,并不会立即执行,因为可能会出现:.cpp 文件中的函数引用了另一个 .cpp 文件中定义的符号或者调用了某个库文件中的函数。那链接的目的就是将这些文件对应的目标文件连接成一个整体,从而生原创 2021-05-29 16:18:46 · 614 阅读 · 2 评论 -
2021-05-22
1、auto关键字:auto自动推断变量类型1)auto可以在声明变量的时候根据变量初始值的类型自动为此变量选择匹配的类型。auto的自动类型推断发生在编译期。2)用auto定义变量时必须对其进行初始化;在编译阶段编译器需要根据初始化表达式来推导auto的实际类型。3)auto并非是一种“类型”的声明,而是一个类型声明时的“占位符”,编译器在编译期会将auto替换为变量实际的类型。auto用作for循环迭代:vector<int> v_case(10, 1);for(au原创 2021-05-22 18:12:25 · 108 阅读 · 0 评论 -
【C/C++】面试知识点总结
第一部分:计算机基础1. C/C++内存有哪几种类型?1)C中,内存分为5个区:堆(malloc)、栈(如局部变量、函数参数)、程序代码区(存放二进制代码)、全局/静态存储区(全局变量、static变量)和常量存储区(常量)。2)此外,C++中有自由存储区(new)一说。3)全局变量、static变量会初始化为缺省值,而堆和栈上的变量是随机的,不确定的。2. 堆和栈的区别?1).堆存放动态分配的对象——即那些在程序运行时动态分配的对象,比如 new 出来的对象,其生存期由程序控制;转载 2021-05-13 08:35:58 · 452 阅读 · 0 评论 -
【C/C++】#define用法 和 “预处理/预编译” 的含义
一、预编译预编译又叫预处理。预编译不是编译,而是编译前的处理。这个操作是在正式编译之前由系统自动完成的。1、C语言源文件要经过编译、链接才能生成可执行程序:1) 编译(Compile)会将源文件(.c文件)转换为目标文件。对于 VC/VS,目标文件后缀为.obj;对于GCC,目标文件后缀为.o。编译是针对单个源文件的,一次编译操作只能编译一个源文件,如果程序中有多个源文件,就需要多次编译操作。2) 链接(Link)是针对多个文件的,它会将编译生成的多个目标文件以及系统中的库、组件等合并成一原创 2020-10-13 22:17:37 · 2778 阅读 · 0 评论 -
【C/C++】Effective C++笔记
条款:尽量以const, enum, inline替换#define原创 2020-10-13 21:54:31 · 188 阅读 · 0 评论 -
【C++】C++裁剪截取含有中文的字符串(防止将中文字符的字节裁断)
string ChineseStringSubstr(const string& str, int& start, int& end){ /* * function:裁剪带中文的字符串.参数1:待裁剪字符串. 参数2:裁剪起始索引值. 参数3:裁剪结果索引值 * 思路:从字符串头部往后寻找每个字符的idex,直到到达需要裁剪的位置,并对裁剪位置的索引值进行矫正,防止将中文字符从所占字节中间切断. */ string hanzi = "汉.原创 2020-09-10 21:12:29 · 1770 阅读 · 1 评论 -
CSDN知识储存
static_cast< new_type >(expression)备注:new_type为目标数据类型,expression为原始数据类型变量或者表达式。static_cast相当于传统的C语言里的强制转换,该运算符把expression转换为new_type类型,用来强迫隐式转换如non-const对象转为const对象caffe中per_class_accur...原创 2019-07-04 17:48:39 · 134 阅读 · 0 评论 -
【C/C++】一个结构体变量占多大内存空间的问题
原文链接:http://blog.sina.com.cn/s/blog_75a2ecd20102xca0.html一个结构体变量占多大内存空间的问题 直接来看相同数据结构体的几种书写的格式吧。格式一:1. struct tagPhone 2. { 3. char A; 4. int B; 5. ...转载 2018-10-24 11:25:26 · 8818 阅读 · 0 评论 -
vector的小用法
#include<iostream>#include<vector>using namespace std;int main(){ vector<int> a; for (int i = 1; i < 6; i++){ a.push_back(i); } a.erase(a.begin()); cout << a[0] ...原创 2017-08-01 10:48:36 · 291 阅读 · 0 评论 -
C++记录程序运行时间
c++获取系统时间和计算程序耗时原创 2017-07-20 15:35:18 · 2767 阅读 · 1 评论 -
vector内存机制和性能分析
很多公司校园招聘过程中(包括笔试、面试环节),经常会涉及到STL中vector的使用(主要是笔试)及其性能(面试)的分析。今天看了下相关文章,也写了几个小的测试程序跑了跑。算是总结下,希望对需要的人有帮助。关于vector,简单地讲就是一个动态数组,里面有一个指针指向一片连续的内存空间,当空间不够装下数据时会自动申请另一片更大的空间,然后把原有数据拷贝过去,接着释放原来的那片空间;当释放或者说...转载 2017-11-02 16:00:44 · 325 阅读 · 0 评论 -
关于Vector删除末尾末尾元素时出现的怪现象
此段代码是删除连续三个不符合规则的vector元素,情况是三个连续不符合规则的元素位于vector的末尾,当检查到最后一个元素时,正好累计到三个连续不符合规则的元素,此时对三个元素进行删除操作,因为此时for循环i的值已经为14(元素共15个),所以博主本来打算采用删除i-2也就是14-2=12的方式进行删除,但是代码删除到最后一个erase语句时会出现错误,显示指针越界了。目前不清楚为什么会这样原创 2017-10-17 15:54:26 · 2802 阅读 · 0 评论 -
【C/C++】c++中符号&的用法
&是C++中的逻辑运算,”与“运算。一般来说是两个 &连用,比如说a与b就是 a&&b。& 如果是单独使用则是进行二进制数的位与运算,比如二进制数 100 & 101 结果就是 100& 还可以作为变量的前面表示取变量地址赋值给指针, 如:int a = 0; int *p = &a;& 如果是单独使用则是进行二进...原创 2018-01-29 11:13:42 · 10538 阅读 · 1 评论 -
【C/C++】C++中malloc函数
malloc函数:向系统申请内存空间。函数申明(函数原型):void *malloc(int size);malloc 向系统申请分配指定size个字节的内存空间。返回类型是 void* 类型。void* 表示未确定类型的指针。C,C++规定,void* 类型可以强制转换为任何其它类型的指针。char *p;p = (char*)malloc(sizeof(char)); ...原创 2018-08-29 16:30:38 · 2374 阅读 · 0 评论 -
[转] C++获取数组的长度
#include<iostream>using namespace std;template<class T>int length(T& arr){ //cout << sizeof(arr[0]) << endl; //cout << sizeof(arr) << endl; re...转载 2018-09-03 09:10:17 · 940 阅读 · 0 评论 -
【C/C++】#define用法 及 与typedef 的区别
1.define定义define的定义更像是简单的字符串替换,而不是作为一个量来使用,这个问题在下面反映的尤为突出。2.define的“函数定义”define可以像函数那样接受一些参数,如下 #define max(x,y) (x)>(y)?(x):(y);3.存在隐患当通过如下方式定义时,#define Add(a,b) a+b;此处c * Add(a,...原创 2018-10-19 21:01:27 · 227 阅读 · 0 评论 -
【C/C++】函数的形参传递值、传递指针、传递引用的区别
1、传递值:把实参的值赋值给行参,那么对行参的修改,不会影响实参的值。单向传递。2.传递指针(即传递地址):通过指针操作实参,同样可以改变实参的值。是传值的一种特殊方式,只是他传递的是地址。此处也是把实参的值赋值给形参(只不过实参的值是一个地址),当我们对形参的值进行修改时,依然不会影响到实参的值。但是此处有个特别重要的一点,形参中的值是一个地址,我们可以通过修改这个地址所指向的内容,...原创 2018-10-19 23:05:43 · 398 阅读 · 0 评论 -
【C/C++】char * ,char ** ,char a[ ] ,char *a[]
1.数组的本质:数组是多个元素的集合,在内存中分布在地址相连的单元中,所以可以通过其下标访问不同单元的元素。2.指针指针也是一种变量,只不过它的内存单元中保存的是一个标识其他位置的地址。3.字符串常量的本质是它的第一个字符的地址。(与数组类似,数组名也为其第一个元素的地址)。char *s ;s = "mgchen"; //此处为什么可以把一个字符串常量赋值给一个指...原创 2018-10-19 23:36:17 · 20690 阅读 · 1 评论 -
【C/C++】浅拷贝与深拷贝的区别
□当对一个已知对象进行拷贝时,编译系统会自动调用一种构造函数——拷贝构造函数,如果用户未定义拷贝构造函数,则会调用默认拷贝构造函数。#include <iostream> using namespace std; class Student{private: int num; char *name; //此处类中包含指针public: Student();...原创 2018-10-24 09:49:04 · 3303 阅读 · 0 评论 -
【C/C++】int const * p1 和const int * p3 和 int * const p4 的区别——const如何进行修饰
开门见山,区分这几个的区别,一个原则。const离谁近,那么const就是修饰谁的。注意:(1)const修饰变量类型时,此时不能直接修改变量的值,只能通过修改指针的指向。(2)const修饰指针时,此时不能修改指针的指向,但是可以修改指针指向变量的值。int const * p1 = &a; //此时const修改的是int,所以不能修改int值const int...原创 2018-10-24 10:50:50 · 993 阅读 · 0 评论 -
Visual Studio展开和折叠函数代码
Ctrl + M + O: 折叠所有方法Ctrl + M + M: 折叠或者展开当前方法Ctrl + M + L: 展开所有方法原创 2017-08-23 17:51:15 · 18306 阅读 · 1 评论