C/C++
文章平均质量分 72
eclipser1987
这个作者很懒,什么都没留下…
展开
-
程序中,嵌套依赖静态链接库和动态链接库
静态链接库 LIB A 有函数 f,打印 1动态链接库 DLL B B依赖静态链接库A程序 EXE C C依赖静态库A,执行f.打印1. 程序C进入SLEEP此时,重新编写静态链接库A 修改 f,打印 2,并且编译依赖最新静态链接库的动态链接库B.完毕后,程序C SLEEP完毕,C程序加载动态链接库B,再次执行f.请问打印内原创 2014-06-13 17:19:50 · 2373 阅读 · 0 评论 -
常规函数适配器,成员函数适配器
stl算法中,可以使用函数指针以及仿函数传递算法.那么为什么还需要常规函数适配器呢?因为,常规函数适配器无"配接能力"例子:/* * File: main.cpp * Author: Vicky.H * Email: eclipser@163.com */#include #include #include #include clas原创 2012-09-24 16:51:13 · 1216 阅读 · 0 评论 -
libcurl使用
libcurl主要功能就是用不同的协议连接和沟通不同的服务器~也就是相当封装了的sockPHP 支持libcurl(允许你用不同的协议连接和沟通不同的服务器)。, libcurl当前支持http, https, ftp, gopher, telnet, dict, file, 和ldap 协议。libcurl同样支持HTTPS证书授权,HTTP POST, HTTP PUT, FTP 上传(当原创 2012-11-02 16:32:54 · 7424 阅读 · 1 评论 -
宏,函数模版方式实现继承方案
在QT中,对于所有定义了信号和槽的类,定义的开始处需要加入:Q_OBJECT宏!!!/* tmake ignore Q_OBJECT */#define Q_OBJECT \public: \ Q_OBJECT_CHECK \ static const QMetaObject staticMetaObject; \ Q_OBJECT_GETSTATICME原创 2012-11-28 11:48:22 · 896 阅读 · 0 评论 -
回顾struct,union的申明,初始化,io处理
/* * File: main.cpp * Author: Vicky.H * Email: eclipser@163.com */#include #include #include void f(void) { struct A { short age; int money; char原创 2012-12-11 17:34:28 · 2441 阅读 · 0 评论 -
google protocol buffer 与 redis 结合使用
google protocol buffer 可以将对象序列化,而redis作为优秀的NOSQL数据库,这里我将以实例方式介绍,将C++对象序列化,并存放在redis数据库中! google protocol buffer 的安装以及基础使用可以阅读我上一片文章.redis的安装使用,可以查阅,这里不再描述.我使用redis的官方C client: hiredis. proto原创 2013-01-23 16:27:29 · 11948 阅读 · 0 评论 -
C++可变长参数模版(Variadic Templates)
/* * File: main.cpp * Author: Vicky.H * Email: eclipser@163.com */#include templatestruct Tuple_Impl;templatestruct Tuple_Impl {};templatestruct Tuple_Impl : public Tuple_Impl {};原创 2013-01-11 15:51:21 · 2612 阅读 · 0 评论 -
函数指针与仿函数
/* * File: main.cpp * Author: Vicky.H * */#include #include int cmp(const void* e1, const void* e2) { const int* i1 = (const int*) e1; const int* i2 = (const int*) e2;原创 2012-08-30 15:20:00 · 3993 阅读 · 0 评论 -
STLport安装指南
STLport安装指南STLport-4.6 是完全兼容ANSI C++标准的类库。This distribution contains STLport sources only, no binaries.To use STLport iostreams, you have to build STLport library from sources in "src"director转载 2012-10-12 10:20:18 · 3596 阅读 · 0 评论 -
内存管理元素
1、三个最重要算法:uninitialized_copy、uninitialized_fill、uninitialized_fill_n 会构造新的对象object,而copy、fill、fill_n会赋新值于已存在的对象上。 2、construct 构造器:template void construct(T1* p,const T2& value);construct(p,v转载 2012-09-27 11:34:02 · 675 阅读 · 0 评论 -
C++为什么不建议使用malloc,calloc,realloc来分配内存?
为什么C++中不建议使用malloc calloc realloc等C语言函数?因为:这样分配的空间,返回的指针需要通过free来释放,但free释放空间不同于delete,free不会执行析构函数! /* * File: main.cpp * Author: Vicky.H * Email: eclipser@163.com */#include #inc原创 2012-09-27 13:14:54 · 7028 阅读 · 0 评论 -
未初始化的存储uninitialized_x
除了,allocator空间分配器之外,中还有初始化容器标准库函数.分别为:templateinline _ForwardIterator uninitialized_copy(_InputIterator __first, _InputIterator __last,_ForwardIterator __result) templateinline void uninit原创 2012-09-27 11:03:48 · 815 阅读 · 0 评论 -
C++ 流的粗略运用
/* * File: main.cpp * Author: Vicky.H * Email: eclipser@163.com */#include #include #include #include class A {public: friend std::ostream& operator<<(std::ostream& os,原创 2012-09-29 11:51:48 · 6300 阅读 · 0 评论 -
常规友元函数,模版友元函数以及友元类.
友元函数和友元类 采用类的机制后实现了数据的隐藏与封装,类的数据成员一般定义为私有成员,成员函数一般定义为公有的,依此提供类与外界间的通信接口。但是,有时需要定义一些函数,这些函数不是类的一部分,但又需要频繁地访问类的数据成员,这时可以将这些函数定义为该函数的友元函数。除了友元函数外,还有友元类,两者统称为友元。友元的作用是提高了程序的运行效率(即减少了类型检查和安全性检原创 2012-09-15 14:48:44 · 1739 阅读 · 0 评论 -
throw(),空异常描述符,中断描述符
在分析stl源码的时候,发现几乎所有函数都包含空异常描述符throw().那么throw()究竟有何意义呢?其实,与其称其为"空异常描述符",还不如称其为"中断描述符".简单的说,如果throw()修饰的函数中发生任何异常,即便函数外部有捕获操作,函数也不会抛出任何异常,那么程序将直接终止!!!简单的说,对使用throw()修饰的函数进行try{}catch(...){}是没有任何意义的!原创 2012-09-19 18:04:51 · 2880 阅读 · 0 评论 -
关于type_info与typeid
不同编译器的返回结果不同!更多请参见:http://www.cppblog.com/smagle/archive/2010/05/14/115286.html/* * File: main.cpp * Author: Vicky.H * Email: eclipser@163.com */#include #include class A {};原创 2012-09-20 14:13:40 · 5446 阅读 · 0 评论 -
多态的实现方式,继承与模版函数
stl,boost中几乎所有容器都采用的是模版类+模版算法的方式实现多态,因为其效率更高!究其原因,静态编译/* * File: main.cpp * Author: Vicky.H * */#include /**动物*/class Animal {public: virtual ~Animal() { }; virtual原创 2012-09-20 11:50:24 · 846 阅读 · 0 评论 -
google protocol buffer (C++,Java序列化使用实例)
转载,请注明出处: http://blog.csdn.net/eclipser1987/article/details/8525383 (eclipser@163.com)1.下载安装:google protocol buffer 的官网地址是:http://code.google.com/p/protobuf/ 建议下载稳定版本:protobuf-2.4.1原创 2013-01-21 16:48:56 · 17546 阅读 · 0 评论 -
回顾进制的转换
二进制,八进制,十进制,十六进制的转换是作为程序员必须会的.其思想很简单,无外乎就是:2进制遇2进18进制遇8进1...二进制与十进制转换:二进制11111111转换为十进制:1 1 1111 1 11 2 481632 64 128 =255二进制10101010转换为十进制:1 0 1010 1 01 0 4原创 2013-03-01 21:05:36 · 1630 阅读 · 0 评论 -
DynamicLinkLibraryAPI
#pragma once#if defined(WIN32) || defined(WIN64)#include typedef HINSTANCE DLLHANDLER;#elif defined(__linux__)#include typedef void* DLLHANDLER;#endifnamespace dll { // 打开动态链接库。bool OpenD原创 2014-04-17 13:22:02 · 1868 阅读 · 0 评论 -
C++11 nullptr的意义
#include void f(int) { std::cout << "int" << std::endl;}void f(char*) { std::cout << "char*" << std::endl;}/* * */int main(void) { f(0); f(NULL); f(nullptr); retur原创 2014-02-18 15:50:08 · 1203 阅读 · 0 评论 -
C++11实现golang的defer类似Java finally操作。
// Copyright 2013 . All rights reserved.// Use of this source code is governed by a BSD-style// license that can be found in the LICENSE file.#ifndef _DEFER_H_#define _DEFER_H_#include #includ转载 2014-01-20 17:05:28 · 3386 阅读 · 1 评论 -
C++实现golang chan 版本一
这是我的一个简单例子,目前不够完善。需要原创 2014-04-22 19:51:50 · 3136 阅读 · 0 评论 -
C++11 std::bind std::function 高级用法
C++11 std::bind std::function 高级用法原创 2014-04-24 13:11:28 · 51921 阅读 · 5 评论 -
golang select 选择器的两种方案
golang select 选择器常规模式:原创 2014-05-17 11:37:50 · 14922 阅读 · 1 评论 -
golang指针的使用,类似C语言
srcsrc\main\main.gosrc\model\model.gopackage modelimport "strconv"type User struct { username string password string age int32}func (this *User) String() string { return "username: "原创 2014-05-17 14:07:58 · 5527 阅读 · 0 评论 -
C++11 lambda 快速理解
lambda 匿名函数现阶段,编译器会将lanmbda匿名函数,转换为仿函数!故,stl算法完全可以使用lambda匿名函数。auto b2 = [a, &b] (int c) -> int{ // a只读, b读写 b = a + c; return a + c;}(1000);[var] 传值方式(只读)将变量传递到匿名函数中[=]原创 2014-02-18 21:25:55 · 5417 阅读 · 0 评论 -
C++11 遍历
/* * File: main45.cpp * Author: Vicky.H * Email: eclipser@163.com */#include #include #include void f1(int& i) {i *= 2;}void f2(int& i) {std::cout << i << std::endl;}/* * */int ma原创 2014-02-13 11:24:11 · 7129 阅读 · 0 评论 -
golang接口的实现以及注意事项。
package mainimport ( "fmt")type Animal interface { move()}type Human struct { i int}func (r Human) move() { // 注意 fmt.Println("人类行走") r.i++}type Bird struct { i int}func (r *Bir原创 2013-07-15 14:25:49 · 7023 阅读 · 0 评论 -
指向指针的指针相关
1.char* buf1[9] = {"hello", "bestwish"};buf1+=9;strlen(buf1) == ?2.int* i[10];int(*j) [10];名词解释:sizeof(i) == ?sizeof(j) == ?/* * File: main.cpp * Author: v原创 2013-07-04 19:32:59 · 680 阅读 · 0 评论 -
将类的成员函数注册为回调函数
#include class Object {};typedef int(Object::*SAYFUNC)(const char*);class A : public Object{public: int say(const char* msg) { std::cout << "A say " << msg << std::endl; return 0; }原创 2013-07-31 11:20:36 · 1905 阅读 · 0 评论 -
go语言使用protobuf与c++做数据通信。
go语言使用protobuf与c++做数据通信。原创 2013-12-16 16:52:22 · 10241 阅读 · 0 评论 -
安装openssl错误解决
安装openssl错误解决1.nmake -f ms\ntdll.mak在这一步出错 cl /Fotmp32dll\cryptlib.obj -Iinc32 -Itmp32dll /MD /Ox /O2 /Ob2 -DOPENSSL_THREADS -DDSO_WIN32 -W3 -WX -Gs0 -GF -Gy -nologo -DOPENSSL转载 2013-12-26 17:38:51 · 8998 阅读 · 0 评论 -
new (nothrow) T() 的原理
查看中对new的声明.void* operator new(std::size_t) throw (std::bad_alloc);void* operator new(std::size_t, const std::nothrow_t&) throw();void* operator new[](std::size_t) throw (std::bad_alloc);void*原创 2012-09-27 12:50:12 · 5088 阅读 · 0 评论 -
C++简单封装共享内存
目前代码只考虑linux环境,win32将随后补充:Assertx.h/* * File: Assertx.h * Author: Vicky.H * Email: eclipser@163.com * * Created on 2014年1月16日, 下午8:33 */// 断言#ifndef CN_VICKY__ASSERTX_H#define CN_原创 2014-01-20 13:36:05 · 7284 阅读 · 1 评论 -
C++11 追踪返回类型
首先,我们先掌握C++11对泛型的支持:decltype RTTI int z = 0; decltype(z) x = 100; std::cout float a = 1.0; double b = 2.0; decltype(a + b) c = a + b; std::cout原创 2014-02-13 10:58:09 · 1937 阅读 · 0 评论 -
windows下,使用netbeans远程连接solaris11开发C++,并且使用DTrace工具
1.VM虚拟机安装sol-11-1111-text-x86.iso 2.安装完毕,查看gcc以及gdb版本.gcc -vgdb -vsol-11-1111-text-x86 不会默认安装gnu gcc 编译器,需要自己下载安装. 3.安装c++ 编译器.首先查看最新版本的gccroot@vicky:~# pkg search gccINDEX原创 2012-09-07 14:41:48 · 1475 阅读 · 0 评论 -
模版类中嵌套自定义模版类型
/* * File: main.cpp * Author: Vicky.H * */#include #include class alloc {};inline size_t __deque_buf_size(size_t n, size_t sz) { return n != 0 ? n : (sz < 512 ? size_t(51原创 2012-08-28 10:07:38 · 2392 阅读 · 0 评论 -
模板类静态变量
/* * File: main.cpp * Author: Vicky.H * */#include class A {public: static int _var;};int A::_var = 1;templateclass B {public: static int _var;};//in原创 2012-08-27 16:33:41 · 2649 阅读 · 0 评论 -
从C转向C++:条款2:尽量用而不用
<br />是的,scanf和printf很轻巧,很高效,你也早就知道怎么用它们,这我承认。但尽管他们很有用,事实上scanf和printf及其系列还可以做些改进。尤其是,他们不是类型安全的,而且没有扩展性。因为类型安全和扩展性是C++的基石,所以你也要服从这一点。另外,scanf/printf系列函数把要读写的变量和控制读写格式的信息分开来,就象古老的FORTRAN那样。是该向五十年代说诀别的时候了!<br />不必惊奇,scanf/printf的这些弱点正是操作符>>和<<的强项: <br /> int转载 2010-09-12 13:53:00 · 506 阅读 · 0 评论