C++
文章平均质量分 61
zhanglei_1991
野生程序猿一只
展开
-
关于堆栈非常经典的一篇文章
非本人作也!因非常经典,所以收归旗下,与众人阅之!原作者不祥!堆和栈的区别一、预备知识—程序的内存分配一个由c/C++编译的程序占用的内存分为以下几个部分1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。2、堆区(heap) — 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收 。注意它与数据结构转载 2016-03-30 10:00:39 · 498 阅读 · 0 评论 -
c++多态情况下对象内存布局
今天在复习C++多态时有个问题没弄清楚,子类继承含有虚函数的父类时,子类的虚表是否是公用的?如果是公用的,虚表什么时候创建?为了弄清楚这个问题,写了以下程序来验证。得到了如下结论:子类的虚表是公用,虚表创建于第一个实例构造之时,所有子类实例虚表指针都指向这块虚表。同时也验证了C++对象的内存布局以下是验证代码:#include "stdafx.h"#includeusin原创 2016-08-31 12:50:06 · 856 阅读 · 0 评论 -
C++单例模式
#include "stdafx.h"#includeusing namespace std;class singleton1 //懒汉模式{public: static singleton1 *getInstance() { if(NULL == m_instance1) { //Lock(); 可自己实现Lock类,或使用boost库中的 if(NULL原创 2016-08-22 12:56:40 · 243 阅读 · 0 评论 -
求 1!+2!+3!....+n! 的 C++递归与非递归实现
本来很简单的一道题,笔试的时候就是脑袋僵掉了,居然传参的时候搞错了。下面是正确的代码#include "stdafx.h"#includeusing namespace std;//递归函数long long func(long long data, long long &sum){ if (data == 1) return 1; long long temp =原创 2016-09-14 21:52:01 · 5307 阅读 · 0 评论 -
7种排序算法的C++实现
以下代码在vs2010环境下调试运行无误,算法简要解析见注释// sort.cpp : 定义控制台应用程序的入口点。////由小到大排序#include "stdafx.h"#includeusing namespace std;#define NUM 10 //数组大小void swap(int * a,int *b){ int temp = *a; *a = *b;原创 2016-08-24 22:49:44 · 529 阅读 · 0 评论 -
华为机试题——购物清单(01背包问题)
题目描述王强今天很开心,公司发给N元的年终奖。王强决定把年终奖用于购物,他把想买的物品分为两类:主件与附件,附件是从属于某个主件的,下表就是一些主件与附件的例子:主件附件电脑打印机,扫描仪书柜图书书桌台灯,文具工作椅无如果要买归类为附件原创 2016-09-18 11:21:24 · 2287 阅读 · 0 评论 -
华为机试题——识别有效的IP地址和掩码并进行分类统计
题目描述请解析IP地址和对应的掩码,进行分类识别。要求按照A/B/C/D/E类地址归类,不合法的地址和掩码单独归类。所有的IP地址划分为 A,B,C,D,E五类A类地址1.0.0.0~126.255.255.255;B类地址128.0.0.0~191.255.255.255;C类地址192.0.0.0~22原创 2016-09-18 20:33:49 · 1794 阅读 · 0 评论 -
华为机试题——简单错误记录
题目描述开发一个简单错误记录功能小模块,能够记录出错的代码所在的文件名称和行号。 处理: 1、 记录最多8条错误记录,循环记录,对相同的错误记录(净文件名称和行号完全匹配)只记录一条,错误计数增加; 2、 超过16个字符的文件名称,只记录文件的最后有效16个字符; 3、 输入的文件可能带路径,记录文件名称不能带路径。原创 2016-09-18 22:18:01 · 748 阅读 · 0 评论 -
c++ map的详细用法
[cpp] view plain copymap的详细用法: map是STL的一个关联容器,它提供一对一(其中第一个可以称为关键字,每个关键字只能在map中出现一次,第二个可能称为该关键字的值)的数据处理能力,由于这个特性,它完成有可能在我们处理一对一数据的时候,在编程上提供快速通道。这里说下map内部数据的组织,map内部自建一颗红黑树(一种转载 2016-09-08 15:12:33 · 551 阅读 · 0 评论 -
C++ 位运算总结
关于逻辑移位、算术移位可参见迅雷深大笔试题部分。的一道题。以前看到C++标准上说,移位运算符(>)出界时的行为并不确定:The behavior is undefined if the right operand is negative, orgreater than or equal to the length in bits of the promoted left opera转载 2016-09-09 16:59:28 · 5349 阅读 · 0 评论 -
C/C++异常处理机制
引言:Visual C++提供了对C语言、C++语言及MFC的支持,因而其涉及到的异常(exception)处理也包含了这三种类型,即C语言、C++语言和MFC的异常处理。除此之外,微软对C和C++的异常处理进行了扩展,提出了结构化异常处理(SEH)的概念,它支持C和C++(与之相比,MFC异常处理仅支持C++)。一个典型的异常处理包含如下几个步骤: (1)程序执行时发生错误;转载 2016-08-07 11:20:11 · 625 阅读 · 0 评论 -
关于struct结构体对齐
题:struct st1{ struct st2{ int i; char c; char c;转载 2016-03-30 10:25:36 · 630 阅读 · 0 评论 -
C++继承时派生类的成员访问属性
公用(public):访问权限最高;除派生类外,外部函数也可以直接访问(无论是成员变量还是成员函数)。私有(private):访问权限最低;只能是该类内部函数互相调用,派生类、外部函数都不能访问。保护(protect):访问权限中间;该类内部函数、派生类都能访问,外部类、外部函数不能访问 我们这样来记会更加容易一些,在继承时: 1、不管采用哪种形式(public原创 2016-03-31 16:41:25 · 3640 阅读 · 1 评论 -
C++虚函数表详细解释及实例分析
原文地址:http://blog.csdn.net/leo115/article/details/8035078C++的虚函数(Virtual Function)是通过一张虚函数表(Virtual Table)来实现的。简称为V-Table。在这个表中,主要是一个类的虚函数的地址表,这张表解决了继承、覆盖(override)的问题,保证其能真实的反应实际的函数。这样,在有虚函数转载 2016-04-05 22:01:33 · 377 阅读 · 0 评论 -
面向对象的三个基本特征 和 五种设计原则
面向对象的三个基本特征原文网址:http://blog.163.com/gogles@yeah/blog/static/1616881772010311640263/1.抽象与封装:抽象是把系统中需要处理的数据和在这些数据上的操作结合在一起,根据功能、性质和用途等因素抽象成不同的抽象数据类型。每个抽象数据类型既包含了数据,又包含了针对这些数据的授权操作。在面向对象的程序设计转载 2016-07-28 10:10:44 · 10373 阅读 · 0 评论 -
C++内存分布——堆、栈、自由存储区、全局/静态存储区和常量存储区
作者:吴秦出处:http://www.cnblogs.com/skynet/ 栈,就是那些由编译器在需要的时候分配,在不需要的时候自动清除的变量的存储区。里面的变量通常是局部变量、函数参数等。在一个进程中,位于用户虚拟地址空间顶部的是用户栈,编译器用它来实现函数的调用。和堆一样,用户栈在程序执行期间可以动态地扩展和收缩。 堆,就是那些由 new 分配的内存块,转载 2016-08-01 09:50:30 · 895 阅读 · 0 评论 -
用vs查看C++类的内存分布
书上类继承相关章节到这里就结束了,这里不妨说下C++内存分布结构,我们来看看编译器是怎么处理类成员内存分布的,特别是在继承、虚函数存在的情况下。工欲善其事,必先利其器,我们先用好Visual Studio工具,像下面这样一步一步来: 先选择左侧的C/C++->命令行,然后在其他选项这里写上/d1 reportAllClassLayout,它可以看到转载 2016-08-01 10:56:32 · 4884 阅读 · 0 评论 -
C++空类编译器自动生成的6个成员函数
一、问题 在C++中,编译器会为空类提供哪些默认成员函数?分别有什么样的功能呢? 二、详解1、空类,声明时编译器不会生成任何成员函数 对于空类,编译器不会生成任何的成员函数,只会生成1个字节的占位符。 有时可能会以为编译器会为空类生成默认构造函数等,事实上是不会的,编译器只会在需要的时候生成6个成员函数:一个缺转载 2016-08-03 10:15:29 · 613 阅读 · 0 评论 -
include查找顺序
对于使用双引号“”包含的include文件,搜索的时候按以下顺序:1.在包含当前include指令的文件所在的文件夹内搜索;2.如果上一步找不到,则在之前已经使用include指令打开过的文件所在的文件夹内搜索,如果已经有多个被include的文件,则按照它们被打开的相反顺序去搜索;3.如果上一步找不到,则在编译器设置的include路径内搜索;4.原创 2016-12-15 16:18:23 · 2907 阅读 · 0 评论