C/C++
digu
http://blog.csdn.net/piggyxp/article/details/6922277
http://blog.csdn.net/zhengzhb/
展开
-
vs2010下配置proc编程环境11
1、首先安装oracle11g和oracle client11g,注意oracle11g的两个下载包要解压到一个文件夹(datebase)中才能安装成功。网上看到一篇帖子说要装32位的oracle,所以虽然我的win7是64位,但oracle我是装的32位的。然后设置ORACLE_HOME为安装oracle client的目录(D:\app\Administrator\product\11.2.0原创 2013-04-03 13:48:10 · 4894 阅读 · 2 评论 -
warning no newline at the end of file
warning no newline at the end of file原创 2010-10-16 14:04:00 · 32835 阅读 · 3 评论 -
区分C语言中getch、getche、fgetc、getc、getchar、fgets、gets函数
两个原帖:http://www.cnblogs.com/younes/archive/2010/01/05/1639482.html http://blog.csdn.net/cxyol/archive/2006/03/18/628324.aspx 首先,这两个函数不是C标准库中的函数:int getch(void) //从标准输入读入一个字符转载 2010-05-11 15:12:00 · 8342 阅读 · 1 评论 -
C/C++中的内存补齐机制
在C语言中,结构是一种复合数据类型,其构成元素既可以是基本数据类型(如int、long、float等)的变量,也可以是一些复合数据类型(如数组、结构、联合等)的数据单元。在结构中,编译器为结构的每个成员按其自然对界(alignment)条件分配空间。各个成员按照它们被声明的顺序在内存中顺序存储,第一个成员的地址和整个结构的地址相同。例如,下面的结构各成员空间分配情况:struct te原创 2009-11-04 18:21:00 · 4149 阅读 · 5 评论 -
内存管理文章
欢迎进入内存这片雷区。伟大的Bill Gates 曾经失言:640K ought to be enough for everybody — Bill Gates 1981程序员们经常编写内存管理程序,往往提心吊胆。如果不想触雷,唯一的解决办法就是发现所有潜伏的地雷并且排除它们,躲是躲不了的。本章的内容比一般教科书的要深入得多,读者需细心阅读,做到真正地通晓内存管理。7.1内存分配方式内存分配方式有转载 2008-04-03 03:14:00 · 985 阅读 · 0 评论 -
C++虚函数的原理及实现
虚函数是在类中被声明为virtual的成员函数,当编译器看到通过指针或引用调用此类函数时,对其执行晚绑定,即通过指针(或引用)指向的类的类型信息来决定该函数是哪个类的。通常此类指针或引用都声明为基类的,它可以指向基类或派生类的对象。 多态指同一个方法根据其所属的不同对象可以有不同的行为(根据自己理解,不知这么说是否严谨)。 举个例子说明虚函数、多态、早绑定和晚绑定: 李氏两兄妹(哥哥和妹妹)转载 2007-11-19 14:08:00 · 6132 阅读 · 3 评论 -
函数传递类类型参数的几点疑问测试
测试前的疑问:函数参数传递过程中,对于类对象,其隐式的类型转换函数(单参构造函数和转换函数)产生的临时变量生命期,以及对引用参数和const引用参数的影响,如果其单参构造函数声明为explict那又如何?看看对于类类型的传值,是调用单参构造函数还是用的单参的类型转换操作。先看一段测试代码://value.hclass value{public: value(int i) :x(原创 2007-11-15 16:20:00 · 1130 阅读 · 0 评论 -
More Effective C++读书笔记(二)
1、不要试图重载||,&&操作符,因为它们使用短路求值法(一旦确定了布尔表达式的真假值,即使还有部分表达式没有被测试,布尔表达式也停止运算),而重载之后采用的是函数调用法。首先当函数被调用时,需要运算其所有参数,所以调用函数functions operator&& 和 operator||时,两个参数都需要计算,换言之,没有采用短路计算法。第二是C++语言规范没有定义函数参数的计算顺序,所以没有办原创 2007-11-13 13:09:00 · 908 阅读 · 0 评论 -
More Effective C++读书笔记(一)
1、多态和指针算法不能混合在一起来用,所以数组与多态也不能用在一起。 Display(Base bs[]) {} Derived dr[]; Display(dr); 在函数内部的array[i]是指针算法*(array+i)的缩写。我们知道bs是一个指向数组起始地址的指针,但是bs中各元素内存地址与数组的起始地址的间隔究竟有多大呢?它们的间隔是i*sizeof(一个在数组原创 2007-11-09 16:29:00 · 820 阅读 · 0 评论 -
二进制格式文件流操作
这里只探讨对operater>和read也有类似的结论。 首先operater如果要以二进制格式写入一个POD类型对象到文件流中,可以直接采用write操作,而对于非POD类型(譬如带有虚拟函数的类对象,子类对象),由sizeof得到的对象大小很可能和程序员需要写入的内存大小不同,此时比较好的做法是重载operater关于fstream在vs2005中不支持中文路径的bug(测试下g原创 2007-11-06 17:25:00 · 2086 阅读 · 0 评论 -
linux CodePage简述
1. Codepage的定义和历史字符内码(charcter code)指的是用来代表字符的内码.读者在输入和存储文档时都要 使用内码,内码分为 单字节内码 -- Single-Byte character sets (SBCS),可以支持256个字符编码. 双字节内码 -- Double-Byte character sets)(DBCS),可以支持6500转载 2007-11-08 17:25:00 · 5074 阅读 · 0 评论 -
C语言函数调用约定
导读: 转载自:馨荣家园blog 在C语言中,假设我们有这样的一个函数: int function(int a,int b) 调用时只要用result = function(1,2)这样的方式就可以使用这个函数。但是,当高级语言被编译成计算机可以识别的机器码时,有一个问题就凸现出来:在CPU中,计算机没有办法知道一个函数调用需要多少个、什么样的参数,也没有硬件可以保存这些参数。也就转载 2007-11-06 10:54:00 · 698 阅读 · 0 评论 -
POD类型解释
偶尔在一些文字资料和 C++ 文档以及 Microsoft .NET 框架中看到术语“POD 类型”。这个术语是什么意思?Shelby Nagwitz你可以将 POD 类型看作是一种来自外太空的用绿色保护层包装的数据类型,POD 意为“Plain Old Data”(译者:如果一定要译成中文,那就叫“彻头彻尾的老数据”怎么样!)这就是 POD 类型的含义。其确切定义相当粗糙(参见 C++ ISO原创 2007-11-05 16:07:00 · 1517 阅读 · 0 评论 -
对C++中类型转换的一些探讨
类型转换经常发生在变量赋值(或初始化)、函数参数传递、函数返回值等地方。首先要注意一点:不管是显示的类型转换还是隐式的类型转换,都有一个到转换结果类型的临时变量的产生:譬如: int i = 1.2; //实际的赋值过程可能是 int temp = 1.2; int i = temp;所以这就很能解释下面这个错误: double d = 2.1;原创 2007-11-01 17:20:00 · 862 阅读 · 0 评论 -
c++中单体模式的实现
c++ 单体模式 实现原创 2011-04-11 03:39:00 · 4940 阅读 · 0 评论 -
VS2010 C++目录配置(zz)
zz: http://blog.csdn.net/stone_sky/article/details/7578727 VS2010 C++目录配置 用过Visual Studio 2010的同学都知道,VS2010和VC 6.0以及其他VisualStudio版本不同,VS2010中C++的目录我们只能在单独的项目中配置。所有的项目有一个总的C转载 2013-04-02 15:39:01 · 4405 阅读 · 1 评论 -
dbx简单使用
dbx使用:编译的时候使用 -g 参数dbx ./a.out //载入可执行文件file 7.c //设置当前文件list main //展示某个函数体stop at 13 //在13行设置断点status //获取当前断点的列表cond //从断点出继续执行next //单步执行,跳过函数step //步入函数where /原创 2012-02-07 15:17:18 · 890 阅读 · 0 评论 -
一篇好文:VC2010中的C++0x特性 Part 2:右值引用
http://www.cnblogs.com/oiramario/archive/2010/10/11/1847802.html转载 2011-12-31 09:43:59 · 943 阅读 · 0 评论 -
临时dd
http://topic.csdn.net/u/20110826/09/601ebe9c-c2ae-4d63-a4e2-506c618bb654.html?70147 http://blog.csdn.net/mengxiangyue/article/details/6930284http://blog.csdn.net/piggyxp/article/details/6922277h转载 2011-11-03 07:54:16 · 581 阅读 · 0 评论 -
大并发情况下,避免竞争数据库中同一个资源的规避方法
1、用select ... for update nowait;如果锁定出现异常,则在外围捕捉,同时循环加1,试图去锁定下一哥资源。2、用序列:大并发情况下,不同请求进入函数得到序列号不同来选定不同的数据资源。类似于下面这样的代码 db.SetSQL("select SEQ_SELECT_NUMBER.nextval cur_seq_pos from dual");原创 2011-11-08 10:17:59 · 1813 阅读 · 0 评论 -
其他C++
1、指针和数组的区别1.cpp:char ia[] = 'Hello';2.cpp:extern char ia[]; //这里不能用extern char *ia;print(ia);2、构造函数,析构函数的异常处理C++在执行构造函数过程中产生异常时,是不会调用对象的析构函数的,而仅仅清理和释放产生异常前的那些C++管理的变量空间等,之后就把异常抛原创 2011-11-21 11:18:48 · 605 阅读 · 0 评论 -
VC6中dll的创建和使用
//-----------------------------------------------------------//+ funs.h#ifdef MyAPI#else#define MyAPI extern "C" __declspec(dllimpor转载 2011-10-17 11:20:07 · 2467 阅读 · 0 评论 -
如何用vc6创建和使用静态库(lib)
vc6下建立工程的当前目录是当前工程的顶级目录(非debug目录)。使用vc6创建和使用静态链接库的过程如下:创建静态链接库:1、创建工程,选择Win32 Static Library创建一个空项目2、添加头文件,在头文件里声明函数3、添加cpp文件,在c转载 2011-10-17 10:18:36 · 5232 阅读 · 0 评论 -
Linux上创建共享库so(简单步骤)
http://blog.csdn.net/zjnig711/article/details/2480011转载 2011-10-17 13:44:33 · 670 阅读 · 0 评论 -
二维数组的堆分配
知易行难 ——看似简单的问题你很可能就不会!以前一直以为二维数组不就是两个一维嘛,从来没有仔细思考,知道今天遇到这个问题,二维数组作为一个类的私有成员,其构造函数从堆中给该二维数组分配内存,居然发现C++不支持int ia[4][4] = new int [4][4]。网上找到一些相关资料总结如下:方法一(使用二级指针): int **p; p = new原创 2007-10-24 15:46:00 · 2660 阅读 · 0 评论 -
关于静态成员变量在类继承中的一个误区
以前一直认为:静态成员变量是该类共有的,那么其派生类就一定要开辟一段新的内存来该存储派生类从基类中继承的静态成员变量。 正确的说法应该是:基类和其派生类共享该基类的静态成员变量内存! 可以看下面的代码:#includeclass base{ int mx;public: static int xxx; static void fun(int x) {原创 2007-10-22 16:29:00 · 8153 阅读 · 2 评论 -
条件表达式? : 的值问题
条件表达是(B?A :C),由于其运算结果运行时才能得到,故在编译阶段,有一个类型提升过程,该表达式的值为A和C中较高的类型。看下面的代码:#include #include using namespace std;int main(){ cout cout return 0;}输出:doubledouble所以有引申出一个问题:条件表达式在何种状况下不能修改为"if (..)原创 2007-10-22 16:37:00 · 896 阅读 · 0 评论 -
浮点数的内存布局
1. 什么是浮点数在计算机系统的发展过 程中,曾经提出过多种方法表达实数。典型的比如相对于浮点数的定点数(Fixed Point Number)。在这种表达方式中,小数点固定的位于实数所有数字中间的某个位置。货币的表达就可以使用这种方式,比如 99.00 或者 00.99 可以用于表达具有四位精度(Precision),小数点后有两位的货币值。由于小数点位置固定,所以可以直接用四位数值来表转载 2007-08-13 13:42:00 · 1566 阅读 · 1 评论 -
C语言中可变参数的用法
C语言中可变参数的用法 我们在C语言编程中会遇到一些参数个数可变的函数,例如printf()这个函数,它的定义是这样的: int printf( const char* format, ...); 它除了有一个参数format固定以外,后面跟的参数的个数和类型是可变的,例如我们可以有以下不同的调用方法: printf("%d",i); printf("%s",s); pri转载 2007-08-12 14:28:00 · 691 阅读 · 0 评论 -
关于隐式提供缺省构造函数的一个误区
很多C++的教材中都讲:“如果一个定义一个类,并且不提供任何构造函数的话,那么编译器将会隐式的提供一个缺省构造函数”。以下节录ISO C++ 99的文档的原文:The default constructor (12.1), copy constructor and copy assignment operator (12.8), and destructor (12.4)are special m原创 2007-08-05 17:10:00 · 3927 阅读 · 1 评论 -
C语言中的位操作例子(将任一整数转换为二进制形式)
将任一整数转换为二进制形式*问题分析与算法设计将十进制整数转换为二进制的方法很多,这里介绍的实现方法利用了C语言能够对位进行操作的特点。对于C语言来说,一个整数在计算机内就是以二进制的形式存储的,所以没有必要再将一个整数经过一系列的运算转换为二进制形式,只要将整数在内存中的二进制表示输出即可。#includevoid printb(int,int);int main(){ int x;p原创 2007-08-04 22:35:00 · 8346 阅读 · 1 评论 -
关于sizeof和strlen的区别
先看几个例子:char *str1="absde"; char str2[]="absde"; char str3[8]={a,}; char ss[] = "0123456789"; 首先说明一点,char类型占一个字节,所以sizeof(char)是1,这点要理解 str1是一个指针,只是指向了字符串"absde"而已。所以sizeof(str1)不是字符原创 2007-08-04 16:37:00 · 1289 阅读 · 1 评论 -
valarray用法简介
valarray类似vector,也是一个模板类,其主要被用来对一系列元素进行高速的数字计算,其与vector的主要区别在于以下两点1、valarray定义了一组在两个相同长度和相同类型的valarray类对象之间的数字计算,例如xarr = cos(yarr) + sin(zarr);2、通过重载operater[],可以返回valarray的相关信息(valarray其中某个元素的引用、特定下原创 2007-07-30 16:36:00 · 20180 阅读 · 0 评论 -
对范型算法next_permutation的源码分析
// TEMPLATE FUNCTION next_permutationtemplate inline bool next_permutation(_BI _F, _BI _L) {_BI _I = _L; if (_F == _L || _F == --_I) // (1) return (false); for (; ; ) {_BI原创 2007-07-23 14:02:00 · 1814 阅读 · 3 评论 -
类构造函数、析构函数相关
1、 对于一个类的构造函数,其非静态成员初始化列表中成员列出的顺序和它们在类中声明的顺序相同。其原因可以这样可虑:对一个对象的所有成员来说,它们的析构函数被调用的顺序总是和它们在构造函数里被创建的顺序相反。为了避免保存某个类对象构造函数调用顺序而导致过多的开销(因为该类的各个构造函数可能又不同的成员初始化表的顺序),最好的办法是对同一种类型的所有对象在创建(构造)和摧毁(析构)过程中对成员的处理顺原创 2007-07-24 12:46:00 · 815 阅读 · 0 评论 -
19章 20章 C++中继承的用法 iostream库
1、 Dynamic_cast操作符可以用来把一个类类型对象的指针转换成同一层次结构中的其他类的指针,同时也可以用它把一个类类型对象的左值转换成同一类层次结构中其他类的引用,注意dynamic_cast和其他的强制转换不同的是它是在运行时刻执行的。C++默认情况下不支持从基类指针到派生类指针的转换,但当我们必须使用派生类的某种特性,而该特性又没有出现在基类中且基类不易通过加入虚拟函数等方法修改时(原创 2007-07-13 16:43:00 · 1836 阅读 · 0 评论 -
C++中的内存管理——对effective c++第二章的总结
operator new在无法完成内存分配请求时会抛出异常(以前的做法一般是返回0),也可以当内存分配请求不能满足时,调用你预先指定的一个出错处理函数。即当operator new不能满足请求时,会在抛出异常之前调用客户指定的该出错处理函数——一般称为new-handler函数。指定出错处理函数时要用到set_new_handler函数,set_new_handler的输入参数是operator原创 2007-07-17 17:22:00 · 1026 阅读 · 0 评论 -
C++中的定义和声明
声明(declaration) ,用来将一个对象、函数、类或者模板的类型名称告诉编译器,声明并不带有细目资讯。定义(definition),用来将细目资讯提供给编译器,对对象而言,定义式是编译器为它分配存储空间;对函数或者函数模板而言,定义是提供函数体;对类或者类模板而言,定义是列出所有成员。注意标准C++支持在某个类定义中声明该类成员变量(而不是定义)的时候就赋初始值的做法:定义某个类(cl原创 2007-07-16 15:42:00 · 956 阅读 · 0 评论 -
C++中的ODR法则
C++ 标准规定“每个程序应该只包含那个程序中用到的每个非内联函数或对象的一个定义”。然而在同一个程序中,一个类、枚举类型、具有内部链接的内联函数和和一 个模板可能有不止一个定义——只要每个定义出现在一个独立的翻译单元即可。对于内联函数和模板的情况,常用做法是在头文件中编写它们的定义,然后在每个独 立编译的源文件中使用 #include 引入它。定义的同等性这就引出一个问题:什么时候两个定转载 2007-07-16 15:10:00 · 4623 阅读 · 0 评论 -
1~2
1、 使用输入、输出文件流时要注意定位外存文件中转义字符的应用,如ifstream in("C://Documents and Settings//digu//桌面//C++//test.txt");的用法。且注意fstream对象的第一个参数为c风格的字符串,故如果要从标准输入输入string的文件名filename,则需要使用ifstream in( filename.c_str() )原创 2006-09-25 10:55:00 · 865 阅读 · 0 评论