
C、C++
整理
零度苏打
有彩虹
展开
-
虚表与虚基表
原创 2020-04-30 14:09:47 · 359 阅读 · 0 评论 -
重载、重写、重定义
原创 2020-04-29 13:43:39 · 119 阅读 · 0 评论 -
C、C++的区别【思维导图】
POP、OOP的区别原创 2020-04-14 13:33:23 · 196 阅读 · 0 评论 -
static【C/C++思维导图】
原创 2020-04-13 16:23:31 · 150 阅读 · 0 评论 -
string类【深浅拷贝】
了解string是表示字符串的字符串类该类的接口与常规容器的接口基本相同,再添加了一些专门用来操作string的常规操作。比特科技string在底层实际是:basic_string模板类的别名,typedef basic_string<char, char_traits, allocator>string;不能操作多字节或者变长字符的序列。在使用string类时,必须...原创 2020-03-16 18:31:06 · 133 阅读 · 0 评论 -
sizeof和strlen的区别?
sizeof是一个操作符,strlen是函数sizeof在编译期间计算(不能返回动态分配内存大小),strlen在运行时计算sizeof参数可以是变量、数据类型strlen参数必须是以“\0”结尾的字符串【char*类型strlen中数组名作为参数时退化成指针,而sizeof不退化观察:#include <stdio.h>#include <string.h&...原创 2020-03-14 19:40:06 · 127 阅读 · 0 评论 -
空间配置器(SGI-STL)
理解是一种管理空间的机制,对空间进行分配、回收重要性:整个STL的操作对象都存放在容器中,容器需要配置空间置放数据。空间配置器为各容器实现了对空间的高效管理为什么不直接用new/delete?用户自己管理空间,容易内存泄漏频繁申请小的内存空间,造成内存碎片频繁调用函数过程中要出栈压栈,效率低会产生额外的空间浪费(申请的空间大小+对空间管理的空间)可能申请失败为什么不说allo...原创 2020-03-13 20:37:24 · 477 阅读 · 0 评论 -
STL总结
三种容器适配器:种类stackqueuepriority_queue默认顺序容器dequedequevector可用顺序容器vector、list、dequelist、dequevector、deque注意基础容器必须提供push_front()基础容器必须提供随机访问基本容器底层结构:vectorlistdeques...原创 2020-03-07 18:24:44 · 153 阅读 · 0 评论 -
C++思维导图(一)
命名空间、缺省参数、函数重载、引用、内联函数&宏原创 2020-02-19 14:17:14 · 226 阅读 · 0 评论 -
shared_ptr循环引用
什么是循环引用shared_ptr虽然适合大多数的场景,但是使用时注意它的缺陷:可能存在循环引用。这里举例说明:class B;class D;class B{public: ~B() {} std::shared_ptr<D> D;};class D{public: ~D() {} std::shared_ptr<B> B;}:void...原创 2020-02-14 22:29:12 · 771 阅读 · 0 评论 -
C语言入门总结——Linux C编程一站式学习
C的语法规则。1.源文件中所有函数定义之外可以出现哪些语法元素?全局变量、函数原型声明、宏定义、typedef和结构体、联合体定义、注释…2.函数定义之中可以出现哪些语法元素?局部变量定义,语句块,注释…3.语句有哪几种?表达式语句、函数调用语句、控制语句、复合语句、空语句。4.哪些语法元素需要遵循标识符的命名规则?标识符的命名规则即:必须用字母/下划线开头;只有下划线、字母、数字...原创 2020-02-14 16:57:51 · 2133 阅读 · 0 评论 -
c++指针和动态内存管理
C++中动态内存的管理主要是使用new/delete表达式和std::allcator类。为了管理动态内存更加安全,C++11新标准库推出了智能指针。new/deletenew完成的操作:(1): 它分配足够存储一个特定类型对象的内存(2):为它刚才分配的内存中的那个对象设定初始值。(对于内置类型对象,就是默认初始化该它,对应类类型,调用constructor初始化)delete完成的操...原创 2020-02-13 18:27:11 · 514 阅读 · 0 评论 -
c、c++内存管理
内存分布c/c++内存的区域划分:栈,又叫堆栈在执行函数时,函数内局部变量的存储单元都可以在栈上创建,函数执行结束时这些存储单元自动被释放。栈内存分配运算内置于处理器的指令集中,效率很高,但是分配的内存容量有限。堆,又称动态内存分配。C语言中 malloc/calloc/realloc就是在堆上申请空间,free释放空间。在c++中就是那些由new分配的内存块,他们的释放编译器不去管,由我...原创 2020-02-11 17:46:19 · 147 阅读 · 0 评论 -
深入理解函数——Linux C编程一站式学习
return语句作用有返回值的函数:是提供整个函数的返回值,并结束当前函数返回到调用它的地方。无返回值的函数:检查到一个错误时提前结束当前函数的执行并返回。int equal(int a,int b){ if(a==b) return 1; else return 0;}理解函数返回一个值相当于定义一个和返回值类型相同的临时变量并用return后面的表达式来初始化。注...原创 2020-02-03 17:40:39 · 217 阅读 · 0 评论 -
简单函数——Linux C编程一站式学习
数学函数在数学中学习过的函数在编程中可以继续使用,需要加上头文件math.h。#include <math.h>#include <stdio.h>int main(void){ double pi = 3.1416; printf("sin(pi/2)=%f ln1=%f\n", sin(pi/2), log(1.0)); //sin(pi/2)=1.0...原创 2020-01-20 14:34:55 · 257 阅读 · 0 评论 -
this指针(c++)
理解每个非静态成员函数都会包含一个特殊的指针,指向使用该函数的对象,这个指针为this指针。对象的this指针并不是对象本身的一部分,不会影响对象的内存大小。this作用域是在类内部,当在类的非静态成员函数中访问类的非静态成员的时候,编译器会自动将对象本身的地址作为一个隐含参数传递给函数。全局仅有一个this指针,当一个对象被创建时,this指针就存放指向对象数据的首地址。特性this...原创 2019-12-06 23:14:47 · 217 阅读 · 0 评论 -
如何明智的内联
理解:内联函数不需要承担函数调用的开销,这点相对于宏来说更好。但在使用时还是需要注意:内联函数会增加整个代码的体积,造成的代码膨胀可能会导致不合理的页面调度行为(即系统颠簸)函数体过多会降低指令高速缓存的命中率,使取指令速度降低。但如果内联函数非常短,生成代码比函数调用生成的少得多,此时就可以带来更小的目标代码,更高的缓存命中率。内联只是提醒可能会被忽略拒绝使用内联的情况内联复杂的...原创 2019-12-05 18:31:52 · 154 阅读 · 0 评论 -
空类的大小
空类中究竟有什么?尽管只是一个空类,但c++会在幕后实现并调用以下函数:拷贝构造函数、赋值运算符、析构函数、取址运算符、缺省构造函数(这些函数都默认公有)。内存类不占空间,对类实例化产生对象后才占用内存。若定义一个空类,求其内存大小,尽管实例不含有任何信息,但实例化的类一定在内存中占有一定空间。【空间大小由编译器决定,在VS中空类实例化占一个字节】...原创 2019-12-05 18:07:32 · 208 阅读 · 0 评论 -
面向对象语言三大特性(c++)
封装封装即通过类将对象的属性以及方法结合起来,仅对外提供接口。封装的好处提高安全性,提高代码的复用性。使得整个工程更加容易可以避免命名冲突的问题继承继承:不同继承方式下派生类的继承模型,分为共有继承和私有继承两种。单继承:一个类只有一个基类多继承:一个类具有多个基类,继承列表中,每个基类前必须加继承权限,否则会采用默认继承。公有继承理解共有继承体现”是一个“含义。公...原创 2019-12-03 18:18:55 · 402 阅读 · 0 评论 -
面向对象和面向过程的区别
面向对象:对象:存在的任何一样物都可以看作是一个对象。把构成问题事务分解成各个对象,每个对象都有属性和方法,将它们组装起来形成有完整功能的系统。面向对象有三大特性,分别是封装性、继承性和多态性(这个之后进行总结)面向过程:分析出解决问题所需要的步骤,为每一种功能写一个函数,使用的时候一个一个依次调用。区别:就像是面向过程程序只用函数实现,而面向对象程序是用类实现各个功能模块。举例说...原创 2019-12-02 20:50:46 · 320 阅读 · 0 评论 -
内联和宏
内联和宏概念内联函数:以inline修饰的函数叫做内联函数,编译时C++编译器会在调用内联函数的地方展开,没有函数压栈的开销,内联函数提升程序运行的效率。宏:定义宏又成为宏替换,以“#define 标识符 字符串”的格式对字符串进行替换。宏常量的定义格式为“const 类型 名=…”,可定义为静态成员,保证常量仅一份拷贝。inline int ADD(int left,int right)...原创 2019-12-02 19:56:56 · 284 阅读 · 0 评论 -
引用
引用概念就是给实体起一个别名,注意在使用是必须进行初始化。特性在同一个空间内,一个引用只能有一个实体,而一个实体可以有多个引用(别名)。【如同一个人可以有多个别名,但多个别名只对应这一个人】常引用即带const的引用。若为常引用则不可以通过这个引用名来改变实体,但是实体还是可以改变的。因为这里比较容易混举例:通过改变实体改变后:若是想要通过const引用改变(如: cra = ...原创 2019-11-30 22:38:31 · 205 阅读 · 0 评论 -
函数重载
概念是c++中函数的一种特殊情况。在相同的作用域,函数名字相同而参数列表不同,函数形成重载。参数列表参数列表的不同体现在以下几点:参数个数不同参数类型次序不同参数类型不同注意:与返回值类型相同与否无关test#include<iostream>using namespace std;int myminus(int a, int b){ return a...原创 2019-11-29 21:50:25 · 190 阅读 · 0 评论 -
内存泄漏
什么是内存泄漏?内存泄漏的危害,内存泄漏分类及解决方案原创 2019-08-01 15:57:05 · 181 阅读 · 0 评论 -
c++解决括号匹配及逆波兰表达式
括号匹配问题#include<stdlib.h>#include<stack>#include<iostream>using namespace std;class Solution{public: bool isValid(string s) { stack<char> s1; for(char ch:s) { if(s1....原创 2019-07-31 16:24:53 · 345 阅读 · 0 评论 -
c++解决:不使用特殊符号计算n!
计算n!,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。#include<stdio.h>#include<iostream>using namespace std;class Temp{public: static unsigned int N; static unsigned int ...原创 2019-07-30 17:08:01 · 604 阅读 · 0 评论 -
类和对象
类和对象C语言中,结构体中只能定义变量,在C++中,结构体内不仅可以定义变量,也可以定义函数。在c++中通常使用类(class)代替结构体。注意:C++中struct还可以用来定义类。和class是定义类是一样的,区别是struct的成员默认访问方式是public,class是struct的成员默认访问方式是private。class Name{//成员函数及变量};类的访问限定...原创 2019-07-30 16:03:41 · 340 阅读 · 0 评论 -
c++入门
c++入门关于c++作用域 c语言作用域 c++作用域关于c++ C++是基于C语言而产生的,它既可以进行C语言的过程化程序设计,又可以进行以抽象数据类型为特点的基于对象的程序设计,还可以进行面向对象的程序设计。C语言是面向过程的一门语音,c++是面向过程(并非完全面向过程)作用域 c语言作用域c语言作用域有两个:局部变量和全局变量 c++作用域c++作用域有三个:局部变量,全局变...原创 2019-07-24 16:48:02 · 122 阅读 · 0 评论 -
操作符
操作符操作符的分类算法操作符移位操作符位操作符赋值操作符单目操作符关系操作符逻辑操作符条件操作符逗号操作符下标引用、函数调用和结构成员算法操作符* / % + -移位操作符>>右移操作符<<左移操作符功能快捷键撤销:Ctrl/Command + Z重做:Ctrl/Command + Y加粗:Ctrl/Co...原创 2019-06-24 17:20:37 · 134 阅读 · 0 评论