C++基础
文章平均质量分 89
C++重要知识点汇总,由浅入深,持续更新!
松狮MVP
这个作者很懒,什么都没留下…
展开
-
二级指针用法示例
1、二级指针的第一种用法:指针数组2、二级指针的第二种内存模型:二维数组3、二级指针的第三种内存模型:扔开C编译器,手工打造二维内存4、总览二级指针的三种内存模型:5、三种内存模型综合演练:原创 2015-08-27 17:31:44 · 1793 阅读 · 0 评论 -
C语言提高之指针初步
1、指针也是一种数据类型 指针是一种数据类型,是指它指向的内存空间的数据类型; *号表示 操作 指针所指向的内存空间中的值; *p相当于通过地址(p变量的值)找到一块内存;然后操作内存;*p放在等号的左边赋值(给内存赋值);*p放在等号的右边取值(从内存获取值); 不断的给指针变量赋值,就是不断的改变指针变量(和所指向原创 2015-08-24 19:18:10 · 1055 阅读 · 0 评论 -
C语言提高之技术模型层次、学习标准、特点、内存四区、函数调用模型
1、C语言技术模型分层:其中,接口的封装和设计尤为重要!2、着重需要培养的能力(1)接口的封装和设计(业务模型的抽象、功能抽象和封装) ———重中之重!a.接口api的使用能力;b.接口api的查找能力(快速上手);c.接口api的实现能力;// SOCKETCLIENT_H,一个简单信息系统的封装接口#ifndef _SOCKETCLIENT原创 2015-08-21 15:18:13 · 1344 阅读 · 0 评论 -
C++ 11之lambda表达式
C++中,一个lambda表达式表示一个可调用的代码单元。我们可以将其理解为一个未命名的内联函数。1、lambda表达式的形式: [capture list] (parameter list) -> return type { function body }其中除了“[ ]”(其中捕获列表可以为空,但必须包含,不能省略)和“复合语句”(相当于具名函数定义的函原创 2015-08-18 10:37:03 · 754 阅读 · 0 评论 -
C++11随机数发生器 VS rand()
C++程序不应该使用库函数rand,而应该使用default_random_engine类和恰当的分布类对象。当我们说随机数发生器时,是指分布对象+引擎对象的组合。1、一个给定的随机数发生器一直会产生相同的随机数序列。一个函数如果定义了局部的随机数发生器,应该将其(引擎对象+分布对象)定义为static的。否则,每次调用函数都会生成相同的序列。#include#include#incl原创 2015-08-18 19:11:27 · 11775 阅读 · 2 评论 -
编写、调用DLL的步骤
比较大的应用程序都由很多模块组成,这些模块分别完成相对独立的功能,它们彼此协作来完成整个软件系统的工作。其中可能存在一些模块的功能较为通用,在构造其它软件系统时仍会被使用。在构造软件系统时,如果将所有模块的源代码都静态编译到整个应用程序EXE文件中,会产生一些问题:一个缺点是增加了应用程序的大小,它会占用更多的磁盘空间,程序运行时也会消耗较大的内存空间,造成系统资源的浪费;另一个缺点是,在编写大的原创 2015-08-31 20:04:06 · 1243 阅读 · 0 评论 -
概览C++之const
1、C语言中const 与 C++中的constvoid main(){const int a = 10;int *p = (int*)&a;*p = 20;printf("%d", a);}比较上述代码在C中和C++中运行结果:C:打印20;C++:打印0;由此可见,C语言中的const是个“冒牌货”,C++中 的const是一个真正的常量。原因:C语言直原创 2016-04-10 00:06:22 · 3227 阅读 · 1 评论 -
二叉树递归遍历中的return
今天瞄到树递归遍历,就多瞄了两眼,没想到一瞄瞄出了自己的尴尬!直接看代码:#include#includetypedef struct BiTNode{ int data; BiTNode *lChild, *rChild;}BiTNode;typedef struct BiTNode* BiTree;void inOrder(BiTree tree){ if原创 2016-03-02 11:41:33 · 3220 阅读 · 1 评论 -
《STL源码剖析》深入分析序列式容器——deque
欲抑先扬!先来看一下deque的优点:(1)头部插入删除操作,常数时间;(2)vector的假象三部曲“因空间不足a寻觅更大空间;b复制原数据;c释放源空间”在deque是不会发生的。因此也就不需要提供空间预留功能。deque的缺点:它的迭代器并不是普通指针,其复杂度远远超出vector,这也直接影响了各个运算层面。deque实质上由一段一段的连续空间组成,如果有必要在前原创 2015-11-08 16:16:08 · 825 阅读 · 0 评论 -
《STL源码剖析》深入分析序列式容器——vector
vector是动态空间,随着元素的加入,它的内部机制会自行扩充空间以容纳新元素。吃多少用多少。(1)vector的空间配置数据结构:iterator start; //已使用空间的头iterator finish; //已使用空间的尾iterator end_of_storage; //目前可用空间的尾 (我们都知道一个vecto原创 2015-11-03 21:45:25 · 736 阅读 · 0 评论 -
C语言二维数组的内存结构图与Java二维数组的内存结构图
C语言二维数组的内存结构图与Java二维数组的内存结构图。。。。。。原创 2015-10-25 00:36:47 · 3490 阅读 · 0 评论 -
C++技术点积累(1)
C++技术点积累原创 2015-09-05 20:59:43 · 1038 阅读 · 0 评论 -
C++技术点积累(2)——拷贝构造函数、深拷贝、浅拷贝
C++技术点积累:1、因为在A类外的B类是无法使用A类的private成的,但是有的时候又有这种需求(A类和B类有一些业务数据联系),一般我们可以A类中编写一些get()函数,getAx(){ return x;//把A类的成员变量甩出去},这样,我们在B类就可以调用A类的getAx()函数来使用A类的成员变量x。2、拷贝构造函数的四种调用情景(拷贝构造函数调用时机)3、深拷贝、浅拷贝原创 2015-09-07 20:55:47 · 1489 阅读 · 0 评论 -
C++技术点积累(3)——对象初始化列表、运算符重载
C++技术累积:1、构造函数的对象初始化列表——初始化列表先于构造函数的函数体执行原因:1)、必须这样做:如果我们有一个类成员(A类),它本身是一个类或者是一个结构,而且这个成员它只有一个带参数的构造函数,而没有默认构造函数,这时要对这个类成员进行初始化,就必须调用这个类成员的带参数的构造函数,如果没有初始化列表,就无法初始化A类的对象(成员),也就无法确定该类本身的内存空原创 2015-09-16 19:46:36 · 1673 阅读 · 0 评论 -
C++技术点积累(4)——继承、多态、抽象类
C++技术累积(4):1、继承:1)对于单个类来说,访问修饰符:public 修饰的成员变量 方法 在类的内部 类的外部都能使用;protected: 修饰的成员变量方法,在类的内部使用 ,在继承的子类中可用 ;其他 类的外部不能被使用;private: 修饰的成员变量方法 只能在类的内部使用 不能在类的外部;2)C++中的继承方式会影响子类的对外访问属性:publ原创 2015-09-16 19:47:09 · 1281 阅读 · 0 评论 -
函数指针基础及应用(正向调用、动态库升级成框架)
1、数组指针2、函数指针函数指针做函数参数的思想精华——调用者任务的人 和 实现任务的人 解耦合(回调函数的本质:提前做了一个协议的约定(把函数的参数、函数返回值提前约定))(C++编译器通过多态的机制(提前布局vptr指针和虚函数表,找虚函数入口地址来实现))2)函数指针应用(1)——正向调用3)函数指针应用(2)——动态库升级成框架原创 2015-09-17 19:38:56 · 2031 阅读 · 1 评论 -
C++技术点积累(5)——泛型编程(函数模板、类模板)
1、函数模板——本质:类型参数化1)使得程序(算法)可以从逻辑功能上抽象,把被处理的对象(数据)类型作为参数传递。总结: 模板把函数或类要处理的数据类型参数化,表现为参数的多态性,称为类属。 模板用于表达逻辑结构相同,但具体数据元素类型不同的数据对象的通用行为。.....2、类模板.....原创 2015-09-18 17:12:23 · 1186 阅读 · 0 评论 -
C++技术点积累(6)——异常处理、输入和输出流
C++技术点积累:1、异常处理机制:2、输入和输出流:原创 2015-09-20 15:51:35 · 1358 阅读 · 0 评论 -
C++技术点积累(7)——STL之容器汇总
C++技术点积累(7)——STL(标准模板库):STL的从广义上讲分为三类:algorithm(算法)、container(容器)和iterator(迭代器),容器和算法通过迭代器可以进行无缝地连接。STL的一个重要特点是数据结构和算法的分离,这种分离使得STL变得非常通用。原创 2015-09-24 09:51:34 · 1534 阅读 · 1 评论 -
C++技术点积累(8)——STL之算法汇总
C++技术点积累(8)——STL之算法汇总:一、算法概述1)算法部分主要由头文件,和组成。 是所有STL头文件中最大的一个,其中常用到的功能范围涉及到比较、交换、查找、遍历操作、复制、修改、反转、排序、合并等等。 体积很小,只包括几个在序列上面进行简单数学运算的模板函数,包括加法和乘法在序列上的一些操作。 中则定义了一些模板类,用以声明函数对原创 2015-09-27 16:32:42 · 1723 阅读 · 0 评论 -
C++技术点积累(9)——补充
1、三目运算符C语言中的三目运算符:#include"stdio.h"void main(){ int a = 10; int b = 15; int z = (a > b ? a : b); printf("z:%d", z); (a > b ? a : b) = 20; //error:错误 1 error C2106: “=”: 左操作数必须为左值 pr原创 2015-09-28 16:41:37 · 729 阅读 · 0 评论 -
设计模式概览
一、UML基础UML(United Modeling Language, 统一建模语言): 是一种基于面向对象的可视化建模语言; UML 采用一组形象化的图形(如类图)符号作为建模语言, 使用这些符号可以形象地描述系统的各个方面;UML 通过建立图形之间的各种关系(如类与类之间的关系)来描述模型;UML 中的关系主要包括 4 种:关联关系(association);依赖关系(dep原创 2015-10-08 17:20:00 · 968 阅读 · 0 评论 -
设计模式概览续(结构型模式)
上一篇介绍了几种创建型模式——单例模式、简单工厂模式,多态工厂模式、抽象工厂模式、建造者模式、原型模式(prototype),接下来介绍结构型模式——代理模式、装饰模式、适配器模式(adapter)、组合模式、桥接模式(bridge)、外观模式(facade)、享元模式(flyweight)。 上述介绍了结构型模式——代理模式、装饰模式、适配器模式(原创 2015-10-10 14:50:48 · 896 阅读 · 0 评论 -
设计模式概览续(行为型模式)
上一篇介绍了结构型模式——代理模式、装饰模式、适配器模式(adapter)、组合模式、桥接模式(bridge)、外观模式(facade)、享元模式(flyweight)。接下来介绍行为型模式——模板模式(template)、命令模式(command)、责任链模式、策略模式、中介者模式(mediator)、观察者模式(observer)、备忘录模式(mememto)、访问者模式(visitor)、状原创 2015-10-11 13:47:50 · 1183 阅读 · 0 评论