c++
文章平均质量分 64
dh爱你的我
Loving program,more loving jing!
展开
-
c++的继承
继承 就是在一个已存在的类的基础上建立一个新的类。 已存在的类称为“基类”或“父类”,新建立的类称为“派生类”或子类。例如class A{};class B:继承权限 A{};//其中继承权限分为public、protect、private,不写此项,默认为private派生类获得了基类的所有特性,这样提高了代码的复用率,即软件的可重用性。继承权限public:父类private不可访问,其原创 2016-10-24 12:03:36 · 277 阅读 · 0 评论 -
#pragma once和#ifundef的区别
在某些高版本中可以使用 #pragma once,这里区别一下#ifundef和#pragma once#pragma once兼容性不好,不是所有编译器都支持,#ifundef是C/C++的标准,所有编译器都支持#pragma once将作用与整个文件,#ifundef可以自定义作用范围#pragma once可以防止同文件引入,但是不能防止同内容文件引入;#ifundef既可以防止同文件一原创 2016-12-06 16:56:44 · 1665 阅读 · 0 评论 -
C语言预处理器
调试环境:vs2015+win10C预处理器就是将源文件经过一些简单的处理,最常用的是删除注释、处理#include指令和处理#define指令。文件包含#include指令:用于在编译期间把指定文件的内容包含仅当前文件中,这样可以使大量的指令和声明更加方便。 引入方式:#include//引入库里面的文件#include"filename"//首先会在本地文件里面查找,未原创 2016-12-02 12:33:26 · 499 阅读 · 0 评论 -
栈应用实例--迷宫问题
调试环境:vs2015+win10众所周知,栈是一个非常常见且有用的数据结构。 这里讲解一下利用栈来实现迷宫问题。使用递归实现假设有一迷宫 其中:1代表墙;0代表路径 为简化编程,假设左边界0处为迷宫入口,下边界0处为迷宫出口库。分析问题:创建一个结构体,表示在迷宫的坐标从文件中读取迷宫获取迷宫路径,需要判断是否可走,将走过的地方标记为2代码实现:#include<assert.h原创 2016-12-02 20:54:07 · 824 阅读 · 0 评论 -
c++多态
运行环境:win10+vs2015,数据以小端字节序存储多态,顾名思义“多种状态”。 首先,要想知道多态的运行了机制,首先要了解一下对象的类型。对象的类型:静态类型:对象声明时的类型,是在编译时确定的动态类型:目前所指向对象的类型,是在运行时确定的举个例子:class Base{};class Deri1:public Base{};class Deri2:public Base{};i原创 2016-10-31 23:41:01 · 658 阅读 · 0 评论 -
通用寄存器
计算的内置寄存器结构分布,以8086CPU的内部寄存器为例:16位CPU通用寄存器共有8个,AX,BX,CX,DX,SP,BP,SI,DI AH和AL是将一个16位的寄存器分别作为两个独立的寄存器,高8位记作H,低8位记作L。 其中有的有特殊的用途:AX为累加器,CX为计数器,BX,BP为基址寄存器,SI,DI为变址寄存器,BP还可以是基指针,SP为堆栈指针。 32位CPU通用寄存器共也有8个原创 2016-10-31 13:33:02 · 1488 阅读 · 0 评论 -
函数时栈帧变换
运行环境:win10+vs2015栈帧 C语言中,每个栈帧对应着一个未运行完的函数。栈帧中保存了该函数的返回地址和局部变量。(百度百科)在c程序中每个函数的执行都需要开辟一块空间来存放一些变量、地址等。 也正是因为如此,每次调用函数的时候会比直接写代码花费的时间更过,也是递归比循环运行速度慢的更本原因。 “栈帧”,是一种栈,具有后进先出的一种数据结构,其栈是向上增长。 push 表示 压原创 2016-10-30 23:28:36 · 447 阅读 · 0 评论 -
调用约定
声明:此篇博客整理于百度百科,加上了一些我的理解 运行环境:win10+vs2015 函数调用约定,是指当一个函数被调用时,函数的参数会被传递给被调用的函数和返回值会被返回给调用函数。函数的调用约定就是描述参数是怎么传递和由谁平衡堆栈的,当然还有返回值。(百度百科)几种调用约定:__stdcall,__cdecl,__fastcall,__thiscall,__nakedcall,__pas原创 2016-10-30 16:47:36 · 412 阅读 · 0 评论 -
宏定义中的#和##
调试环境:win10+vs2015在C语言中#define是经常使用的,这里就介绍一下“#”和“##” “#”:表示在宏定义中使用原字符串 “##”:表示连接前后两个字符串 这两个都只能用在#define中使用 举例:#define TEST(a,b) cout<<a<<" "<<#a<<" "<<b<<" "<<#b<<endlint main(){ TEST('c','d');原创 2016-10-27 18:16:45 · 511 阅读 · 0 评论 -
c++模板函数
调试环境 win10+vs2015 模板是c++中泛型编程的基础,一个模板就是一创建类或函数的蓝图或者说公式。(c++ primer)其实模板对于我们生活来说是十分常见的,在编程这里也不例外。 对于编程的初学者来说,多写一点代码,可以增加代码熟练度,但是对于工程来说,那就是浪费时间。 所以c++提供了模板这个机制。如何编写一个通用的加法函数使用函数重载,针对每个所需相同行为的不同类型重新原创 2016-11-02 21:45:16 · 633 阅读 · 0 评论 -
key-value的topK问题
测试环境:win10+vs2015生活中经常遇到key-value问题,最常见的就是字典,所以研究key-value的问题就是很有必要的。这里有个例题: 夏日炎炎,某公司为犒劳辛苦耕耘的程序猿,打算卖水果,但是不知道各位程序猿的喜欢的事什么水果,然后发了一张调查问卷,现今数据已经发到了你的手上,你需要统计并且找出最受程序猿欢迎的前几种水果。这个是一道非常标准的key-value的topK问题。思路原创 2017-02-16 11:30:41 · 524 阅读 · 0 评论