C++
文章平均质量分 79
fenxinzi557
西安电子科技大学
展开
-
什么是*.manifest 文件?
什么是.manifest 文件[现象]对这个问题的研究是起源于这么一个现象:当你用VC++2005(或者其它.NET)写程序后,在自己的计算机上能毫无问题地运行,但是当把此exe文件拷贝到别人电脑上时,便不能运行了,大致的错误提示如下:应用程序配置不正确,请重新安装程序……或者是MSVCR80D.dll 没有找到什么的(我记得不是很清楚,不过大致是这样的)[分析]看到这样的转载 2015-09-21 20:14:49 · 688 阅读 · 0 评论 -
C++输入输出函数的用法(转载)
一、简介 由于 C++ 语言没有自动内存回收机制,程序员每次 new 出来的内存都要手动 delete。程序员忘记 delete,流程太复杂,最终导致没有 delete,异常导致程序过早退出,没有执行 delete 的情况并不罕见。 用智能指针便可以有效缓解这类问题,本文主要讲解参见的智能指针的用法。包括:std::auto_ptr、boost::scoped_ptr、boost::shared转载 2016-08-16 16:16:09 · 13554 阅读 · 0 评论 -
C++基础
1)左值:左值可以出现在赋值语句的左边或者右边。 右值:右值只能出现在赋值语句的右边,不能出现在赋值语句的左边。 变量是左值,因此可以出现在赋值语句的左边。数字字面值是右值,因此不能被赋值。=读取右操作数并写到左操作数。 2)C++中理解“初始化不是赋值”,初始化指创建变量并给他赋初始值,赋值则是擦除对象的当前值并用新值代替。 3)声明和定义变量的定义用于为变量分原创 2016-08-08 20:26:56 · 645 阅读 · 0 评论 -
C++变量在内存中的分布
C/C++变量在内存中的分布在笔试时经常考到,虽然简单,但也容易忘记,因此在这作个总结,以加深印象。先写一个测试程序:#include <stdio.h> #include <malloc.h> int g_i = 100; int g_j = 200; int g_k, g_h; int main() { const int MAXN = 100;转载 2016-08-10 09:22:23 · 411 阅读 · 0 评论 -
C/C++ 堆和栈的区别
数据结构的堆栈暂时忽略不谈。 1)预备知识—程序的内存分配 一个由C/C++编译的程序占用的内存分为以下几个部分 1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其 操作方式类似于数据结构中的栈。 2、堆区(heap) — 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回 收 。注意它与数据结构转载 2016-08-10 09:51:51 · 430 阅读 · 0 评论 -
C++应用程序的编译过程
一:一般的C++应用程序的编译过程。 一般说来,C++应用程序的编译过程分为三个阶段。模板也是一样的。 1.在cpp文件中展开include文件。 2. 将每个cpp文件编译为一个对应的obj文件。 3.连接obj文件成为一个exe文件(或者其它的库文件)。 下面分别描述这几个阶段。 1.include文件的展开。 include文件的展开是一转载 2016-08-10 11:26:06 · 376 阅读 · 0 评论 -
C++变量作用域和声明周期
对一个C++变量来说,有两个属性非常重要:作用域和生命周期,它们从两个不同的维度描述了一个变量–时间和空间。顾名思义,作用域就是一个变量可以被引用的范围,如:全局作用域、文件作用域、局部作用域;而生命周期就是这个变量可以被引用的时间段。不同生命周期的变量,在程序内存中的分布位置是不一样的。一个程序的内存分为代码区、全局数据区、堆区、栈区,不同的内存区域,对应不同的生命周期。 有很多方法来指定一个原创 2016-08-10 10:35:06 · 2598 阅读 · 0 评论 -
C++应用程序的编译过程
一:一般的C++应用程序的编译过程。 一般说来,C++应用程序的编译过程分为三个阶段。模板也是一样的。 1.在cpp文件中展开include文件。 2. 将每个cpp文件编译为一个对应的obj文件。 3.连接obj文件成为一个exe文件(或者其它的库文件)。 下面分别描述这几个阶段。 1.include文件的展开。 include文件的展开是一个很简单的过程,只是将inc转载 2016-08-11 10:46:05 · 387 阅读 · 0 评论 -
#pragma once与#ifndef的区别
为了避免同一个文件被include多次1 #ifndef方式 2 #pragma once方式在能够支持这两种方式的编译器上,二者并没有太大的区别,但是两者仍然还是有一些细微的区别。 方式一: #ifndef SOMEFILE_H #define SOMEFILE_H … … // 一些声明语句 #endif方式二:#pragma once转载 2016-08-11 11:22:59 · 309 阅读 · 0 评论 -
#include<string>与#include<string.h>的区别
为什么下面这段代码#include <string.h>void main(){ string aaa= "abcsd d"; printf("looking for abc from abcdecd %s\n", (strcmp(aaa,"abc")) ? "Found" : "Not Found");}不能正确执行,说是string类型没有定义 而下面:转载 2016-08-11 11:40:45 · 753 阅读 · 0 评论 -
C++模板深入理解
如何组织编写模板程序 前言 常遇到询问使用模板到底是否容易的问题,我的回答是:“模板的使用是容易的,但组织编写却不容易”。看看我们几乎每天都能遇到的模板类吧,如STL, ATL, WTL, 以及Boost的模板类,都能体会到这样的滋味:接口简单,操作复杂。我在5年前开始使用模板,那时我看到了MFC的容器类。直到去年我还没有必要自己编写模板类。可是在我需要自己编写模板类时,我首先遇到的事实却是“传统转载 2016-08-12 12:01:32 · 1583 阅读 · 0 评论 -
C++如何生成随机数
随机数的生成 1.最简单的随机数生成 只要产生随机数而不需要设定范围的话,只要用rand()就可以了, rand()会返回一随机数值, 范围在0至RAND_MAX 间。 RAND_MAX定义在stdlib.h, 其值为2147483647。 代码如下:# include <iostream>using namespace std; int main() { for(int i=原创 2016-06-22 11:11:52 · 31941 阅读 · 7 评论 -
sizeof的用法及与strlen的比较
转载文章,学习一下~ 1、什么是sizeof sizeof在msdn上的定义: The sizeof keyword gives the amount of storage, in bytes, associated with a variable or a type (including aggregate types). This keyword returns a value of转载 2016-06-22 11:03:51 · 272 阅读 · 0 评论 -
CRT与Windows的关系
CRT原先是指Microsoft开发的C Runtime Library(C语言运行时库),用于操作系统的开发及运行。后来在此基础上开发了C++ Runtime Library,所以现在CRT是指Microsoft开发的C/C++ Runtime Library。在VC的CRT/SRC目录下,可以看到CRT的源码,不仅有C的,也有C++的。 CRT原先的目的就是支持操作系统的运行。因为Window转载 2016-06-22 10:39:14 · 2956 阅读 · 0 评论 -
define和typedef的区别
define和typedef的区别#define 是宏命令,在编译前,由预处理器做替代,把程序中的所有遇到的词,全部替代。简单理解为就是进行简单的替换。。 例如: #define PINT int* 就是把所有的词 PINT 替换成 int * ,替换完毕再编译。 typedef int* pint; 是语句,由编译器在编译过程中编译处理。 int* x; pint x;原创 2016-03-08 11:19:47 · 1577 阅读 · 0 评论 -
C++中new和delete的用法
首先,new和delete运算符是用于动态分配和撤销内存的运算符。 一、new用法 1.开辟单变量地址空间 使用new运算符时必须已知数据类型,new运算符会向系统堆区申请足够的存储空间,如果申请成功,就返回该内存块的首地址,如果申请不成功,则返回零值。 new运算符返回的是一个指向所分配类型变量(对象)的指针。对所创建的变量或对象,都是通过该指针来间接操作的,而动态创建的对象本原创 2016-04-13 11:36:47 · 799 阅读 · 0 评论 -
虚函数和函数重载
函数重载: 面向对象编程过程中,针对定义大量的函数,函数命名难度开始出现,为了解决此问题,希望通过函数重名来达到简化编程的目的。 例如,要声明两个求绝对值的函数:int abs(int);double abs(double);C++完全可以同时定义以上两个函数而不会引起函数意义上的冲突。 C++编译器可以根据函数参数的类型、数量和排列顺序的差异,来区分同名函数,这种技术成为原创 2016-05-12 11:44:17 · 4898 阅读 · 0 评论 -
静态联编和动态联编
参考博客:http://bdxnote.blog.163.com/blog/static/8444235200911311348529/ 1.什么是联编? 联编是指一个计算机程序自身彼此关联的过程,在这个联编过程中,需要确定程序中的操作调用(函数调用)与执行该操作(函数)的代码段之间的映射关系;按照联编所进行的阶段不同,可分为静态联编和动态联编; 例如: A类中有fun这个函数, B类中也有原创 2016-05-13 10:49:58 · 1693 阅读 · 0 评论 -
C++中的类型转换
1.动态转型 dynamic_cast 动态转型是专门针对有虚函数的继承结构来的,它将基类指针转换成想要的子类指针,以做好子类操作的准备,因为可能有各个不同的子类,所以其操作可能是不同的。# include <iostream>using namespace std;class Account{......//具体操作不详细给出,只做说明};class Checking:public原创 2016-05-13 11:52:20 · 718 阅读 · 0 评论 -
百科(.NET)(整理)
百科: .NET是 Microsoft XML Web services 平台。XML Web services 允许应用程序通过 Internet 进行通讯和共享数据,而不管所采用的是哪种操作系统、设备或编程语言。Microsoft .NET 平台提供创建 XML Web services 并将这些服务集成在一起之所需。对个人用户的好处是无缝的、吸引人的体验。 .NET就是微软原创 2016-04-19 11:11:09 · 1148 阅读 · 0 评论 -
.dll/.obj/.lib文件解析
爬虫【1】什么是DLL?动态链接库(Dynamic Linkable Library)可以简单的把DLL看成一种仓库,它提供给你一些可以直接拿来用的变量、函数或类。在仓库的发展史上经历了“无库-静态链接库-动态链接库”的时代。 静态链接库与动态链接库都是共享代码的方式,如果采用静态链接库,则无论你愿不愿意,lib中的指令都被直接包含在最终生成的EXE文件中了。但是若使用DLL,该DLL不必被包含在原创 2016-04-19 11:21:36 · 1323 阅读 · 0 评论 -
C++类的存储及类对象内存结构
本文分两部分,前半部分讲类的存储后半部分讲类的内存结构。 C++类的存储 c++中最重要的就是类,那么一个类的对象,它在内存中如何存储的?它占 内存中多少个字节? 首先确定类的构成: 1,数据成员:可以是内置类型,类类型。 2,函数成员:虚函数,非虚函数 1)数据成员 内置类型对齐原则 内置类型就是常用的:char,short,long,int,float,double. 这些内原创 2016-07-22 16:06:12 · 19821 阅读 · 4 评论 -
虚函数与纯虚函数的区别
首先:强调一个概念 定义一个函数为虚函数,不代表函数为不被实现的函数。 定义他为虚函数是为了允许用基类的指针来调用子类的这个函数。 定义一个函数为纯虚函数,才代表函数没有被实现。 定义纯虚函数是为了实现一个接口,起到一个规范的作用,规范继承这个类的程序员必须实现这个函数。 1、简介 假设我们有下面的类层次:class A { public: virtual void转载 2016-07-22 16:47:13 · 333 阅读 · 0 评论 -
C++沉思录学习笔记
转载学习笔记,学习一下~~~ 第一篇 动机 讲述C++什麽地方吸引了作者,和作者为什麽要在编程中使用C++。 一开始,作者就提出了C++本质——抽象和封装:类。 抽象可以帮助设计者可以有所侧重,C++使我们更容易把程序看作抽象的集合,同时也隐藏了那些用户无须关心的抽象工作细节。封装则是C++可以把问题精心划分为分割良好的模块,使得模块与模块之间的信息得到很好的隐藏。模块化不完全同于C转载 2016-06-22 10:29:08 · 467 阅读 · 0 评论 -
Visual Studio中使用异常方法及开启
**转载文章,学习一下,后面专门学习异常处理再作补充~~**在使用Windows程序的时候,相信没有用户喜欢看到程序突然崩溃的情形吧!为了避免程序崩溃,程序员在编写程序的时候最好在容易出错的地方使用异常处理机制来保证友好的用户体验。特别是编写C/C++代码的时候,崩溃是经常的事情! 今天一位同事给我说,编写C/C++代码崩溃的原因主要是因为内存操作违规。如果每次操作一块内存或指针之前都检查内存转载 2016-06-22 10:35:18 · 4087 阅读 · 0 评论 -
C++字符串操作详解
选用C++标准程序库中的string类,是因为他和c-string比较起来,不必担心内存是否足够、字符串长度等等,而且作为一个类出现,他集成的操作函数足以完成我们大多数情况下(甚至是100%)的需要。我们可以用 = 进行赋值操作,== 进行比较,+ 做串联(是不是很简单?)。首先,为了在我们的程序中使用string类型,我们必须包含头文件 。如下: #include //注意这里不是st原创 2016-05-19 22:56:33 · 76830 阅读 · 9 评论