自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(26)
  • 资源 (1)
  • 收藏
  • 关注

原创 使用dyncall动态调用函数

#include #include "include/dyncall.h"class test{public: test(int x):value(x){} void print(){ std::cout << value << std::endl; }private: int value;};char* show(int x, double y, bo

2012-10-20 10:29:21 1600 4

原创 vc下使用def文件导出动态库

1、新建test工程,配置类型选择动态库(.dll)2、加入工程代码 int __stdcall add(int a, int b) { return a+b; } int __stdcall sub(int a, int b) { return a-b; }3、增加test.def文件,描述如下 LIBRARY test EXPORTS add @ 1 s

2012-07-03 18:19:47 5675

原创 文件夹递归遍历

#include #include #include #include void find(const char* lpPath, std::vector& fileList){ char szFind[MAX_PATH]; char szFile[MAX_PATH]; WIN32_FIND_DATA FindFileData; strcpy(szFi

2012-06-28 19:05:15 395

原创 虚继承下的多重继承内存布局

#include class A{public: int a; A():a(10){ std::cout << "A constructor" << std::endl; } void f() { std::cout << "A::f" << std::endl; }};class B: virtual public A{p

2012-06-24 12:16:34 362 1

原创 多继承下的内存布局

#include class A{public: int a; virtual void f() { std::cout << "A::f()" << std::endl; } virtual void g() { std::cout << "A::g()" << std::endl; } vi

2012-06-23 19:25:19 364

原创 多态虚函数表

#include class A{public: virtual void f() { std::cout << "A::f()" << std::endl; } virtual void g() { std::cout << "A::g()" << std::endl; } virtual void

2012-06-23 17:36:15 271

原创 模板函数与类模板

#include #include using namespace std;int max_f(int a, int b){ std::cout << "int max_f(int a, int b)" << std::endl; return a > b ? a : b;}template T max_f(T a, T b){ std::cout

2012-06-22 19:02:06 393 1

原创 new和delete数组类型

当new自定义类型数组对象的时候,会在返回地址的前面多申请4个字节,存放对象的个数,delete的时候根据对象个数循环调用析构函数,如果对象delete的时候没有析构函数可以使用,那么这个长度信息是不会存在的。#include class test{public: test(){ std::cout << "constructor" << std::endl; } ~t

2012-06-21 20:53:01 791

原创 new的一个可能实现

#includeusing namespace std;new_handler g_new_handler_f = NULL;class A{public: A(){ std::cout << "constructor" << std::endl; /* throw int();*/} ~A(){ std::cout << "destructor" << std::

2012-06-21 14:49:10 298

原创 set_unexpected使用

VS2005中的set_unexpected与标准C++不同,在exception头文件中set_unexpected函数定义为空,MSDN对set_unexpected的解释如下The C++ Standard requires that unexpected is called when a function throws an exception that is not on its

2012-06-20 20:12:18 1567

原创 适配器初识

#include #include #include #include using namespace std;//缺省版本bool count_f(const int a){ return a > 8;}//ptr_fun版本bool greater_f(const int a, const int b){ return a > b;}

2012-06-20 18:05:54 320

转载 指定小数位数输出

按有效位输出是 setprecision,按小数位数输出也是setprecision,但到底是谁取决于fixed。cout cout 测试代码:#include #include using namespace std;int main( void ){ const double value = 12.3456789; cout << value <

2012-06-17 09:49:50 697

原创 虚基类构造函数调用

#include using namespace std; class A{public: A(int a):a_(a){ std::cout << "A constructor" << std::endl; }private: int a_;};class B: virtual public A{public: B(int a, int b):

2012-06-16 12:43:49 905

原创 new和delete的使用

1、操作符与表达式#include using namespace std;class A{public: A():a(100),b(200) { std::cout << "constructor " << std::endl; } ~A() { std::cout << "destructor " <<

2012-06-15 19:59:02 366

原创 默认数据类型的最大最小值

#include #include using namespace std;int main(){ std::cout << "int max: \t" << INT_MAX << std::endl; std::cout << "int min: \t" << INT_MIN << std::endl; std::cout << "long

2012-06-15 15:53:06 284

原创 不同进制输出

#include #include #include #include #include using namespace std;int main(){ bool b = true; std::cout << b << std::endl; //1 std::cout << boolalpha << b << std::endl;

2012-06-15 15:41:17 365

原创 流迭代器初识

#include #include #include #include #include using namespace std; int main(){ vector a; vector::iterator iter; for (int i=0; i<10; i++) a.push_back(i); ostream_iterat

2012-06-15 12:47:28 224

原创 c++小知识

1、a++不能作为左值 int a = 10; ++a = 1;//ok a++ = 1;//errora++是先使用a的值作运算,然后再使a的值增加1,如果允许执行a++左值的赋值运算,那么就要在赋值运算之后使a值再增加1,这样赋值运算就没意义了,a最终的结果不是赋值后的结果。2、#error指示符指令将使编译器显示一条错误信息,然后停止编译3、AS

2012-06-08 17:04:52 327 1

原创 c++冷门关键字

1、volatile 定义为volatile的变量可能会被意想不到的被改变,所以每次使用的时候优化器都会重新的去读取该变量的值,而不是使用保存在寄存器中的值volatile 修饰函数的时候和const类似,如volatile定义的类对象只能调用volatile修饰的成员函数,volatile的成员函数和非volatile的同名同参成员函数会构成重载2、mutable 可以在类的const成

2012-06-07 16:36:37 462 1

转载 inline关键字使用

1、inline用在函数声明时,还是函数定义时?还是两边都加? 首先,内联函数声明和定义最好在同一个文件中,其它的情况没有实用上的意义。 只要在同一个文件中,声明和定义至少其一加“inline”修饰即可。 2、inline的函数可不可以同时是虚函数? 可以。 因为inline只是给编译器的一种建议,编译器并不保证一定进行内联展开,也并不保证一定不进行内联展开。更详细地讲,假

2012-06-07 14:29:09 618

原创 C隐式类型转换与运算符优先级

1、隐式类型转换右边的类型要作运算之前都先要转换为左边的类型,然后再进行算术运算,不同类型之间运算按照从下到上进行类型转换double    ^    | long   ^   |unsigned   ^   |  int 2、运算符优先级(转)共44个运算符:醋坛酸味灌,味落跳福豆醋-初等,4个: ( ) [ ] -> 指向结构体成员 .

2012-06-06 20:25:53 819

原创 static与const小结

1、static变量函数体内:静态变量,在函数第一次被调用的时候定义该变量,以后调用该函数的时候直接使用上次定义的变量,变量会一直存在,直到程序结束函数体外:一个声明为静态的变量可以被模块内所有函数所访问,但不能被模块外的函数所访问。类静态成员变量:属于类所有,可以直接使用类名调用,所以属于该类的对象共同拥有。2、static函数静态函数:声明为静态的函数可以被模块内所有其

2012-06-06 19:16:17 729

原创 函数调用约定

主要的调用约定分为以下几种,还有thiscall、naked call,当然主要的应用还是stdcall(WIN32调用规范),cdecl(C/C++、MFC规范)thiscall不是关键字,它是C++类成员函数缺省的调用约定。由于成员函数调用还有一个this指针,因此必须特殊处理,thiscall意味着:参数从右向左入栈,如果参数个数确定,this指针通过ecx传递给被调用者;如果参数个数不

2012-06-06 16:40:05 341

原创 智力题收集

1、你让工人为你工作7天,给工人的回报是一根金条。金条平分成相连的7段,你必须在每天结束时给他们一段金条,如果只许你两次把金条弄断,你如何给你的工人付费?1+2+4分法,可以组合出来1、2、3、4、5、6、72、现在小明一家过一座桥,过桥时候是黑夜,所以必须有灯。现在小明过桥要1秒,小明的弟弟要2秒,小明的爸爸要6秒,小明的妈妈要8秒,小明的爷爷要12秒。每次此桥最多可

2012-06-02 15:53:33 2046

原创 VC结构体边界对齐

在VC中,结构中各种数据类型有不同的对齐方式:char      对齐偏移量必须是1的倍数short     对齐偏移量必须是2的倍数int          对齐偏移量必须是4的倍数float       对齐偏移量必须是4的倍数double  对齐偏移量必须是8的倍数为了确保结构的大小为结构字节的边界数,(即该结构中占用最大空间的类型所占用的字节数)的倍数所以在

2012-06-02 13:46:30 1023

原创 指针使用汇总

#include int main(){ char* a[10]; //a是一个数组,数组里面每个元素是一个char*类型的指针 char* (*b)[10];//b是一个指针,该指针指向一个数组,数组里面每个元素是一个char*类型的指针 char** c[10]; //c是一个数组,数组里面每个元素是一个char**类型的指针(也就是指向指针的指针)

2012-05-26 15:06:48 288

dyncall调用例子

包含官方网站下载的0.6版本的库以及头文件

2013-01-26

空空如也

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

TA关注的人

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