代码改变世界

随笔分类 -  C++

c++ DISALLOW_COPY_AND_ASSIGN

2016-01-10 18:21 by youxin, 5103 阅读, 收藏, 编辑
摘要: Google C++编程规范 – 第三十二条 -《拷贝构造函数》【规范】仅在确认需要的时候,才定义拷贝构造函数和赋值运算符;否则,请使用DISALLOW_COPY_AND_ASSIGN关闭此功能。【定义】我们通过拷贝构造函数和赋值运算符来实现对一个类对象的拷贝。在一些情况下,编译器会隐式的调用拷贝构... 阅读全文

glog安装与使用

2015-10-21 00:23 by youxin, 7944 阅读, 收藏, 编辑
摘要: window环境下glog的安装 载后解压,利用Visual Studio打开google-glog.sln。生成解决方案 打开sln会有几个项目,libglog是动态库,生成dll,libglog_static是静态库,生成lib。 安装: 方法一:将libglog.dll和libglog.lib 阅读全文

redis客户端hiredis

2015-10-16 10:01 by youxin, 1541 阅读, 收藏, 编辑
摘要: Hiredis在官网http://redis.io/clients中有说明ThisistheofficialCclient.Supportforthewholecommandset,pipelining,eventdrivenprogramming.在Linux平台下载hiredis开发包,解压在命... 阅读全文

mysql++使用

2015-10-15 00:02 by youxin, 2178 阅读, 收藏, 编辑
摘要: Mysql++是官方发布的、一个为MySQL设计的C++语言的API。Mysql++为Mysql的C-Api的再次封装,它用STL(Standard Template Language)开发并编写,并为C++开发者提供像操作STL容器一样方便的操作数据库的一套机制。其官方API介绍:MySQL++ ... 阅读全文

c/c++ json使用

2015-10-14 23:58 by youxin, 627 阅读, 收藏, 编辑
摘要: 比如出名的有CJson,c++一般用jsoncpphttp://sourceforge.net/projects/jsoncpp/jsoncpp:http://www.cnblogs.com/fengbohello/p/4059435.html 阅读全文

mysql++ 安装

2015-10-14 22:52 by youxin, 2063 阅读, 收藏, 编辑
摘要: 官网介绍:http://www.tangentsoft.net/mysql++/MySQL++ is a C++ wrapper forMySQL’s C API. It is built around the same principles as the Standard C++ Library,... 阅读全文

函数名 函数名取地址 区别

2015-04-05 20:37 by youxin, 3050 阅读, 收藏, 编辑
摘要: 有时看到如下的代码:/*****************************/#include #include #include void test(){ printf("123456\n");} int main(int argc, char *argv[]){ printf(... 阅读全文

gcc __attribute__

2015-04-05 01:21 by youxin, 596 阅读, 收藏, 编辑
摘要: GNU C的一大特色就是__attribute__机制。__attribute__可以设置函数属性(Function Attribute)、变量属性(Variable Attribute)和类型属性(Type Attribute)。__attribute__书写特征是:__attribute__前后... 阅读全文

gdb多线程调试

2015-04-03 16:48 by youxin, 2600 阅读, 收藏, 编辑
摘要: 死锁:一种情形,此时执行程序中两个或多个线程发生永久堵塞(等待),每个线程都在等待被 其他线程占用并堵塞了的资源。例如,如果线程A锁住了记录1并等待记录2,而线程B锁住了记录2并等待记录1,这样两个线程就发生了死锁现象。gdb调试死锁的方法:gdbattach pidthread apply all... 阅读全文

gdb core

2015-04-03 16:46 by youxin, 743 阅读, 收藏, 编辑
摘要: 程序运行发生异常退出,比如segment错误,此时可以利用系统生成的core文件,配合GDB来定位问题。 问题程序: segment.c Core文件: 1. 查看系统是否允许生成core文件 [plain] view plaincopy #ulimit -a core file size (blo 阅读全文

c++11 右值引用

2015-03-25 17:20 by youxin, 466 阅读, 收藏, 编辑
摘要: C++ 11中引入的一个非常重要的概念就是右值引用。理解右值引用是学习“移动语义”(move semantics)的基础。而要理解右值引用,就必须先区分左值与右值。对左值和右值的一个最常见的误解是:等号左边的就是左值,等号右边的就是右值。左值和右值都是针对表达式而言的,左值是指表达式结束后依然存在的... 阅读全文

构造函数为什么不能是虚函数

2015-03-21 17:51 by youxin, 4454 阅读, 收藏, 编辑
摘要: 1 构造一个对象的时候,必须知道对象的实际类型,而虚函数行为是在运行期间确定实际类型的。而在构造一个对象时,由于对象还未构造成功。编译器无法知道对象的实际类型,是该类本身,还是该类的一个派生类,或是更深层次的派生类。无法确定。。。2 虚函数的执行依赖于虚函数表。而虚函数表在构造函数中进行初始化工作,... 阅读全文

空基类优化empty base class optimization

2015-03-09 11:51 by youxin, 1478 阅读, 收藏, 编辑
摘要: 1、为什么C++中不允许类的大小是0class ZeroSizeT {};ZeroSizeT z[10];&z[i] - &z[j];一般是用两个地址之间的字节数除以类型大小而得到的,而类型大小是0将会出问题2、为什么有时多个类组成实例所占空间都是一样的class Empty{ };class Em... 阅读全文

c++ 11nullptr

2015-03-02 14:34 by youxin, 487 阅读, 收藏, 编辑
摘要: 1. 引入nullptr的原因引入nullptr的原因,这个要从NULL说起。对于C和C++程序员来说,一定不会对NULL感到陌生。但是C和C++中的NULL却不等价。NULL表示指针不指向任何对象,但是问题在于,NULL不是关键字,而只是一个宏定义(macro)。1.1 NULL在C中的定义在C中... 阅读全文

C++匿名命名空间

2015-03-02 11:38 by youxin, 37010 阅读, 收藏, 编辑
摘要: 当定义一个命名空间时,可以忽略这个命名空间的名称: namespce {char c; int i;double d; } 编译器在内部会为这个命名空间生成一个唯一的名字,而且还会为这个匿名的命名空间生成一条using指令。所以上面的代码在效果上等同于: namespace __UNIQUE_NAM... 阅读全文

boost智能指针总结

2015-02-27 14:41 by youxin, 1347 阅读, 收藏, 编辑
摘要: 智能指针是一种具备指针类似行为的对象,当不在需要它的时候自动删除其引用的c++对象。直接点说就是自动析构C++对象。boost提供了6种智能指针,如下所示:scoped_ptr单个对象的简单的唯一所有权. 不能拷贝.scoped_array数组对象的唯一所有权. 不能拷贝.shared_ptr多个指... 阅读全文

c++模板元编程

2015-02-27 12:51 by youxin, 645 阅读, 收藏, 编辑
摘要: 范例:// 主模板templatestruct Fib{ enum { Result = Fib::Result + Fib::Result };};// 完全特化版template struct Fib{ enum { Result = 1 };};// 完全特化版template s... 阅读全文

c++ 模板 不能 分离编译

2015-02-26 12:21 by youxin, 1108 阅读, 收藏, 编辑
摘要: C++Template头文件和定义分开编译的问题(1)// Foo.htemplateclass Foo{public:void f();};// Foo.cpp#include #include "Foo.h"templatevoid Foo::f(){std::cout ::f()/n";}//... 阅读全文

effective C++ 条款25 swap

2015-02-26 10:53 by youxin, 529 阅读, 收藏, 编辑
摘要: item 25:一个不抛异常的swap函数标准库有一个swap用于交换两个对象值namespace std{ template void swap(T& a , T& b) { T temp(a) ; a = b ; b = temp ; }}所以,只要对象的类型T支持copying(copy ct... 阅读全文

Pimpl Idiom /handle body idiom

2015-02-26 10:52 by youxin, 1581 阅读, 收藏, 编辑
摘要: 在读《Effective C++》和项目源代码时,看到pImpl Idiom。它可以用来降低文件间的编译依赖关系,通过把一个Class分成两个Class,一个只提供接口,另一个负责实现该接口,实现接口与实现的分离。这个分离的关键在于“以声明的依赖性”替换“定义的依赖性”,而编译依赖性最小化的本质是:... 阅读全文
上一页 1 2 3 4 5 6 ··· 11 下一页