自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(24)
  • 收藏
  • 关注

转载 C++:探讨i++和++i

最近笔者在调试代码时发现自己在对++运算符的理解上不够深入,导致一个不应有的bug的出现。在代码书中或课堂上我们都知道++i和i++在作为一个单独语句使用时没有区别,即相当于i=i+1; 而作为语句的一部分时,如a=++i; 和a=i++; ++i先执行加1操作,再执行赋值操作(因++在前),而i++是先执行赋值操作,再执行加1操作(因++在后)。但这种论述未将其中更深的运行机制讲出来,尤其是

2012-09-05 09:06:00 931

转载 C++析构函数的自动调用问题

首先要明确一点,系统只会自动释放栈内空间,而堆内空间需要用户自己维护。C++中,除了new来的空间存放在堆内,其他均存放在栈中。当单纯的创建对象的时候,对象存放在栈中,此时在程序块的}后面,系统会自动调用析构函数,释放掉栈空间。但是,如果创建了指向new来的一块空间的指针的时候,如果在没有显示释放掉new到的堆空间时,系统是不会自动调用析构函数去释放栈空间中的指针的。

2012-08-27 10:34:53 10552 1

转载 map等关联容器 vector等序列容器 如何防止迭代器失效 即erase()的使用

序列性容器::(vector)erase迭代器不仅使所有指向被删元素的迭代器失效,而且使被删元素之后的所有迭代器失效,所以不能使用erase(iter++)的方式,但是erase的返回值为下一个有效的迭代器,所以正确方法为::for( iter = c.begin(); iter != c.end(); )iter = c.erase(iter);关联性

2012-08-13 16:26:12 1065

转载 map常用成员(关联容器)----创建map<主键,主键对应的值>,增insert,删erase,改查找find,然后修改second,遍历iterator,获取元素个数size,判空empty

map是STL的一个关联容器,它提供一对一(第一个字段为关键字,每个关键字只能在map中出现一次,第二个字段称为该关键字的值)的数据处理能力,由于这个特性map内部的实现自建一颗红黑树(一种非严格意义上的平衡二叉树),这颗树具有对数据自动排序的功能。头文件::#include #include using namespace std;创建map对象::map o

2012-08-13 16:25:32 7955

原创 C++:删除map元素,当value值为指针时,如何释放内存。

class A { ··· ···};map stoaMap;1)通过迭代器遍历删除map::iterator iter = stoaMap.begin();while(iter != stoaMap.end()) //#1 {  //注意要先释放内存,在删除map元素,顺序不能颠倒。   //释放内存 delete iter->second; iter->se

2012-08-13 16:24:09 18065 1

转载 C++:在遍历/循环中删除map元素, 如何避免iter 迭代器失效

C++:在迭代中删除map的成员 首先要清楚一点,迭代器相当于是容器上的指针,容器可以自己管理内 存,因此迭代器可能失效。如果你在不知情的情况下使用了失效的迭代器,后果是不可预料的。可能程序立即崩掉,也可能什么事都没有发生。崩掉了算你 幸运,因为你至少知道出了问题,不然有你受的。回到正题,我想说什么呢?比如:程序代码map theMap;// a

2012-08-13 15:19:20 3231

原创 C++报错集合:在Linkeage时出现undefined reference to `SPTraderController::writeAplLog(bfl::BString const&)'

错误描述:make之后,顺利经过编译阶段,在连接(Linkage)阶段(此阶段将上步生成的目标文件和系统库的目标文件和库文件连接起来)出现错误:../lib/linux_gcc4/libSPTLIB.a(SPTraderController.o):(.data.rel.ro._ZTV18SPTraderController[vtable for SPTraderController]+0x

2012-03-15 17:07:05 883

转载 string, char*, int类型转换 , c++强制转化

一、C++代码以下是常用的几种类型互相之间的转换string 转 int..............................char* 转 int #include int atoi(const char *nptr); long atol(const char *nptr); long long atoll(const char *nptr); long long

2012-03-14 17:17:45 10636

转载 [C / C++] undefined reference问题总结

来自: http://ticktick.blog.51cto.com/823160/431329标签:Linux 方法 解决 总结 undefined reference 原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://ticktick.blog.51cto.com/823160/431329 最

2012-03-12 11:47:08 1865

转载 C++报错集合:

class vs struct in forward declaration leads to linker error 填写者 Yevgen Muntyan关闭作为 按照设计10登录进行投票

2012-03-07 16:36:21 1049

原创 C++报错集合:XX does not name a type;field `XX' has incomplete type

两个C++编译错误及解决办法--does not name a type和field `XX' has incomplete type编译错误一:XX does not name a type编译错误二:field `XX' has incomplete type 编译错误一:XX does not name a type, 中文意思为“XX没有命名一个类型“拿个例子来讲,如果

2012-03-07 13:54:33 8212 1

原创 C++报错集合:cannot call member function “virtual void A:: initialize()”without object

意思应该是:不能在没有对象的情况下,调用A类的成员函数initialize();context:void B::initialize( int argc, char** argv){···A::initialize( argc, argv);···}修改方法:1、B类继承A类 class B: public A{}2、新建一个A的对象,A a

2012-03-07 13:49:58 24175

原创 C/C++学习疑点:回调函数和类的声明

1、回调函数(摘自百度百科)为什么要使用回调函数?        回调可用于通知机制。例如,有时要在A程序中设置一个计时器,每到一定时间,A程序会得到相应的通知,但通知机制的实现者对A程序一无所知。那么,就需一个具有特定原型的函数指针进行回调,通知A程序事件已经发生。实际上,SetTimer() API使用一个回调函数来通知计时器。如果没有提供回调函数,它还会把一个消息发往程序的消息队列。

2012-03-05 13:57:04 1138

原创 C++报错集合:undefined reference to `htonl@4'

在Windows下 安装eclipse,MinGW,环境变量也配置完后,而且成功的运行了“hello world”程序。结果自己写了个简单程序,里面调用了htonl()函数,也加入了头文件#include ,结果碰到一个麻烦,就是编译出错,提示: undefined reference to `htonl@4'一般说来,undefined reference to ~~~~原因

2012-02-17 14:00:10 10167 1

转载 C++报错集合:expected unqualified-id before ‘using’

今天写了一个occi的C++程序,结果一编译就出了个莫名其妙的错误。 信息如下:g++ -c TDBPro.cpp -I/u01/oracle/rdbms/public -I./TDBPro.cpp:3: 错误:expected unqualified-id before ‘using’  TDBPro.cpp 的第一行代码为头文件包含,第二行为空行,第三行就为using 命名空间

2012-02-14 12:03:32 2186

原创 C++报错集合:error: 'CppUnit::TestFixture' is an inaccessible base of 'LMQueryConnectionTest'

编译后报错: LMQueryConnectionTest.cc:194:   instantiated from here/home/dts/users2/yujia.tao/DTS/trunk/vendor/cppunit/linux_gcc4/include/cppunit/extensions/TestFixtureFactory.h:41: error: 'CppUnit::Tes

2012-02-14 11:48:42 2395

转载 STL中的常用的vector,map,set,sort, list用法笔记

C++的标准模板库(Standard Template Library,简称STL)是一个容器和算法的类库。容器往往包含同一类型的数据。STL中比较常用的容器是vector,set和map,比较常用的算法有Sort等。.一. vector1.声明:          一个vector类似于一个动态的一维数组。          vector a; //声明一个元素为int类型的

2012-02-10 10:55:04 837

转载 关于有符号数和无符号数的探讨

这个问题,要是简单的理解,是很容易的,不过要是考虑的深了,还真有些东西呢。下面我就把这个东西尽量的扩展一点,深入一点和大家说说。 一、只有一个标准! 在汇编语言层面,声明变量的时候,没有 signed 和 unsignde 之分,汇编器统统,将你输入的整数字面量当作有符号数处理成补码存入到计算机中,只有这一个标准!汇编器不会区分有符号还是无符号然后用两个标准来处理,它统统当作有

2011-11-01 19:10:51 857 1

转载 C语言关于补码的解释及误区

在中文的C语言教材中,总有些人被原码、反码、补码弄得晕头转向,下面的文章写的不错,阐述明了,特转载之……(其实我也觉得反码之类的东西是有些人自作聪明弄出来的定义,反而弄得人晕头转向,有时候简单挺好)正文开始:关于补码,看过一些书籍和网文,基本都是在“求反加一”的方法、步骤上反复强调,而对于补码的本质和定义,讨论的不足。这就对初学者的造成了误导,使得很多人都纠结在-128的补码求取过程中

2011-10-31 18:10:10 1021 3

原创 sizeof有话说:“其实你不懂我的心”

先做个选择题:sizeof是关键字还是函数呢?请看以下这例: int i=0; A),sizeof(int);  B),sizeof(i);  C),sizeof int;  D),sizeof i; 毫无疑问,32 位系统下A),B)的值为4。那C)的呢?D)的呢? 调试后发现,D)也是4,而C)是出错?因为函数名后面没有括号是不行的哦~所以sizeof是关键字,不是函数

2011-10-31 15:07:16 482

原创 一道C语言笔试题——理解结构体的内存对齐和位域问题

(Win32平台下在GNU GCC编译器中)给定结构struct A{char t:4;char k:4;unsigned short i:8;//short大小为2字节,与之前的8位总共3个字节,补1个字节形成4字节对齐,到此为4字节unsigned long m;//long大小为4字节};问sizeof(A) = ?【标准答案】8注意:字节对齐还与编译器有

2011-10-29 10:43:57 3363 2

原创 【c及c++学习笔记】typedef的妙用

typedef的妙用  typedef给你一种方式来克服“*只适合于变量而不适合于类型”的弊端。你可以如下使用typedef:  typedef char * PCHAR; PCHAR p,q;  这里的 p 和 q 都被声明为指针。(如果不使用 typedef,q 将被声明为一个 char 变量,这跟我们的第一眼感觉不太一致!)下面有一些使用typedef的声明,

2011-10-27 15:50:53 414

转载 Linux下AT&T汇编语法格式简介1

一、AT&T 格式Linux 汇编语法格式在 AT&T 汇编格式中,寄存器名要加上 '%' 作为前缀;而在 Intel 汇编格式中,寄存器名不需要加前缀。例如: AT&T 格式Intel 格式pushl %eaxpush eax在 AT&T 汇编格式中,用 '$' 前缀表示一个立即操作数;而在

2011-10-27 15:50:38 657

转载 Linux下AT&T汇编语法格式简介2

上述输出信息的第一列是指令对应的地址码,利用它可以设置在程序执行时的断点:ald> break 0x08048088Breakpoint 1 set for 0x08048088断点设置好后,使用 run 命令开始执行程序。ALD 在遇到断点时将自动暂停程序的运行,同时会显示所有寄存器的当前值:ald> run

2011-10-27 15:50:00 491

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除