- 博客(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
1714
1
原创 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
5850
原创 文件夹递归遍历
#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
438
原创 虚继承下的多重继承内存布局
#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
424
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
393
原创 多态虚函数表
#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
301
原创 模板函数与类模板
#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
444
1
原创 new和delete数组类型
当new自定义类型数组对象的时候,会在返回地址的前面多申请4个字节,存放对象的个数,delete的时候根据对象个数循环调用析构函数,如果对象delete的时候没有析构函数可以使用,那么这个长度信息是不会存在的。#include class test{public: test(){ std::cout << "constructor" << std::endl; } ~t
2012-06-21 20:53:01
825
原创 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
329
原创 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
1623
原创 适配器初识
#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
353
转载 指定小数位数输出
按有效位输出是 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
741
原创 虚基类构造函数调用
#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
940
原创 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
396
原创 默认数据类型的最大最小值
#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
309
原创 不同进制输出
#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
403
原创 流迭代器初识
#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
250
原创 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
384
原创 c++冷门关键字
1、volatile 定义为volatile的变量可能会被意想不到的被改变,所以每次使用的时候优化器都会重新的去读取该变量的值,而不是使用保存在寄存器中的值volatile 修饰函数的时候和const类似,如volatile定义的类对象只能调用volatile修饰的成员函数,volatile的成员函数和非volatile的同名同参成员函数会构成重载2、mutable 可以在类的const成
2012-06-07 16:36:37
532
转载 inline关键字使用
1、inline用在函数声明时,还是函数定义时?还是两边都加? 首先,内联函数声明和定义最好在同一个文件中,其它的情况没有实用上的意义。 只要在同一个文件中,声明和定义至少其一加“inline”修饰即可。 2、inline的函数可不可以同时是虚函数? 可以。 因为inline只是给编译器的一种建议,编译器并不保证一定进行内联展开,也并不保证一定不进行内联展开。更详细地讲,假
2012-06-07 14:29:09
672
原创 C隐式类型转换与运算符优先级
1、隐式类型转换右边的类型要作运算之前都先要转换为左边的类型,然后再进行算术运算,不同类型之间运算按照从下到上进行类型转换double ^ | long ^ |unsigned ^ | int 2、运算符优先级(转)共44个运算符:醋坛酸味灌,味落跳福豆醋-初等,4个: ( ) [ ] -> 指向结构体成员 .
2012-06-06 20:25:53
873
原创 static与const小结
1、static变量函数体内:静态变量,在函数第一次被调用的时候定义该变量,以后调用该函数的时候直接使用上次定义的变量,变量会一直存在,直到程序结束函数体外:一个声明为静态的变量可以被模块内所有函数所访问,但不能被模块外的函数所访问。类静态成员变量:属于类所有,可以直接使用类名调用,所以属于该类的对象共同拥有。2、static函数静态函数:声明为静态的函数可以被模块内所有其
2012-06-06 19:16:17
772
原创 函数调用约定
主要的调用约定分为以下几种,还有thiscall、naked call,当然主要的应用还是stdcall(WIN32调用规范),cdecl(C/C++、MFC规范)thiscall不是关键字,它是C++类成员函数缺省的调用约定。由于成员函数调用还有一个this指针,因此必须特殊处理,thiscall意味着:参数从右向左入栈,如果参数个数确定,this指针通过ecx传递给被调用者;如果参数个数不
2012-06-06 16:40:05
373
原创 智力题收集
1、你让工人为你工作7天,给工人的回报是一根金条。金条平分成相连的7段,你必须在每天结束时给他们一段金条,如果只许你两次把金条弄断,你如何给你的工人付费?1+2+4分法,可以组合出来1、2、3、4、5、6、72、现在小明一家过一座桥,过桥时候是黑夜,所以必须有灯。现在小明过桥要1秒,小明的弟弟要2秒,小明的爸爸要6秒,小明的妈妈要8秒,小明的爷爷要12秒。每次此桥最多可
2012-06-02 15:53:33
2139
原创 VC结构体边界对齐
在VC中,结构中各种数据类型有不同的对齐方式:char 对齐偏移量必须是1的倍数short 对齐偏移量必须是2的倍数int 对齐偏移量必须是4的倍数float 对齐偏移量必须是4的倍数double 对齐偏移量必须是8的倍数为了确保结构的大小为结构字节的边界数,(即该结构中占用最大空间的类型所占用的字节数)的倍数所以在
2012-06-02 13:46:30
1062
原创 指针使用汇总
#include int main(){ char* a[10]; //a是一个数组,数组里面每个元素是一个char*类型的指针 char* (*b)[10];//b是一个指针,该指针指向一个数组,数组里面每个元素是一个char*类型的指针 char** c[10]; //c是一个数组,数组里面每个元素是一个char**类型的指针(也就是指向指针的指针)
2012-05-26 15:06:48
313
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人