Category Archives: C/C++

C++模板元编程初探

下面的文字摘自,

https://kelvinh.github.io/blog/2013/08/09/cpp-template-meta-programming/

这篇博客,主要是为了记一下当初看到C++模板元编程时的震惊程度。

在看Effective C++的时候,条款48,其中有这样一个例子:

继续阅读

Posted in C/C++ | Tagged | Leave a comment

std::thread错误 terminate called without an active exception

本人之前写过一篇文章介绍如何使用C++11的是线程库
C++11的新特性之线程类

在之后的实践中发现一个问题,就是本文标题中列出的这个错误
terminate called without an active exception

本文中的代码使用下面的命令编译,编译环境 Centos 7,

$> g++ test.cpp -std=c++11 -ggdb -lpthread -o test

这个错误是在程序运行的时候出现的,编译阶段没有任何错误。问题代码如下,

继续阅读

Posted in C/C++ | Tagged | Leave a comment

C++11的新特性之shared_ptr和unique_ptr

本篇文章将继续介绍C++11的新特性-智能指针 shared_ptr和unique_ptr。关于所有C++11的重要的改变请参看,

C++11的重大改变

智能指正并不是C++11才引入的,早在C++98/03标准中已经有了auto_ptr。在C++11定义了新的智能指针来替代 std::auto_ptr.

继续阅读

Posted in C/C++ | Tagged | Leave a comment

C++11的新特性之线程类

之前翻译一篇前C++标准委员会的Danny Kalev写的C++11的重大改变

其中提到了新加入的线程类,本篇就谈谈C++11的线程类,关于它的介绍和用法。先看下cppreference.com是怎样定义线程类的,

The class thread represents a single thread of execution. Threads allow multiple functions to execute concurrently.

继续阅读

Posted in C/C++ | Tagged | 1 Comment

C++11的重大改变

此篇文章是本人翻译自前C++标准委员会的Danny Kalev写的The Biggest Changes in C++11 (and Why You Should Care)

原文地址:

The Biggest Changes in C++11 (and Why You Should Care)

自C++的第一个迭代版本算起,已经有11年头了,前C++标准委员会的成员Danny Kalev解释了编程语言如何被提高,如何帮助你写更好的代码。

继续阅读

Posted in C/C++ | Tagged | 3 Comments

C++17都出来了

这篇文章不像是个技术文章,像是我本人心情篇。

我今天还在学习c++11的新特性,结果发现c++14也出来,后来想大概看看C++14有什么特性,无意间发现c++17都出来了,我了去,我这是落后多少代了?!

然后自己就想,其实不用学了,因为学了暂时也用不了,因为编译器还不支持,不过刚才查了wiki,发现我去g++已经都支持到C++17了,

继续阅读

Posted in C/C++ | Leave a comment

C++设计模式之创建模式[Builder Pattern]

C++设计模式之创建模式[Builder Pattern]

我创建的这个对象比较复杂,且该对象里面的成员函数用不同的实现来表示不同的实例,换句话说就是同样的对象构建过程可以有不同的表示。比如我那天去吃过桥米线,他们有不同的套餐,套餐里包含的种类是一样的,都有一碗米线,一份凉菜,一杯饮料。但是不同的套餐里这3样又都不是全部一样的。此时我们就可以用建造者模式。

继续阅读

Posted in C/C++ | Leave a comment

C++设计模式之命令模式[Command Pattern]

C++设计模式之命令模式[Command Pattern]     

我们去餐厅吃饭,我们是通过服务员来点菜,具体是谁来做这些菜和他们什么时候完成的这些菜,其实我们都不知道。抽象之,“菜单请求者”我们和“菜单实现者”厨师,2者之间是松耦合的,我们对这些菜的其他一些请求比如“撤销,重做”等,我们也不知道是谁在做。其实这就是本文要说的Command模式。

继续阅读

Posted in C/C++ | Leave a comment

C++设计模式之访问者模式[Visitor Pattern]

C++设计模式之访问者模式[Visitor Pattern]

我们去银行柜台办业务,一般情况下会开几个个人业务柜台的,你去其中任何一个柜台办理都是可以的。我们的访问者模式可以很好付诸在这个场景中:对于 银行柜台来说,他们是不用变化的,就是说今天和明天提供个人业务的柜台是不需要有变化的。而我们作为访问者,今天来银行可能是取消费流水,明天来银行可能 是去办理手机银行业务,这些是我们访问者的操作,一直是在变化的。

继续阅读

Posted in C/C++ | Leave a comment

C++设计模式之模板模式[Template Pattern]

C++设计模式之模板模式[Template Pattern]

     我们最近在开发一个支持多种压缩类型文件的解压缩且制作成pdf的一个应用。对我们的架构来说我们需要支持多种压缩文件类型,但却有固定的操作顺序(先解压缩,在读取里面的文件分析、制作pdf)。我们抽取他们的共同点:这些操作的固定顺序,把他放到我们的父类里;他们的变化点:这些个具体的操作,去留给不同的子类去实现。这个就是模板方法模式,他定义一个操作中的算法的骨架(例子中的固定的操作顺序),而将一些步骤延迟到子类中(例子中的多种压缩文件的解压缩)。

继续阅读

Posted in C/C++ | Leave a comment