小键233

~~233

C++ Task 的实现(lambda 是个好东西)

本文目的在于实现一个简单易用的 task 类。它的目的在于将将要执行的动作和上下文相关信息(如参数)保存起来,然后在想要执行的时候,发起这个动作。 完成品的实例如下: struct A { int b; }; task t([](A a, A b, int c)->void...

2017-11-15 12:38:53

阅读数 1076

评论数 0

new 与 delete 操作符

new 和 delete 是C++ 中一对动态申请内存的操作符。new_handler 行为在std的命名空间中,有这样的代码:namespace std { typedef void (*) () new_handler; new_handler set_new_handler(...

2016-05-09 12:38:20

阅读数 656

评论数 0

模板Trait 技术与简述template 元编程

模板Trait 技术想了好久都没有想到合适的例子,已是干脆直接使用[1]中的例子就好了。STL 中引入了迭代器的概念。但是在本文中的例子不直接使用STL 的迭代器,而是写了一段很简短的代码,作为演示使用。 本例中的迭代器有三种: Forward_Iter,只能向前进,也就是只能加非负数 Bidi...

2016-05-08 20:41:04

阅读数 521

评论数 0

模板

隐式接口与编译器多态 假如有如下的模板函数: templatetypename T> void doSomething(T& t) { if(t.getIs() ) { t.traver(); } } 那么,对于T 而言,它的隐式接口...

2016-05-08 11:12:13

阅读数 479

评论数 0

完全不知道怎么取标题,但是不进来看看也许会后悔--其实我一开始想写关于virtual 函数的

假如,现在有个类,它含有数据,我们需要为它编写一些遍历的函数。 就比如,类是这样的:class SomeClass { enum{ Length = 512}; int element[Length]; public: void traver() { ...

2016-05-07 13:49:12

阅读数 494

评论数 0

面向对象设计时的若干考虑

在OOP 中,类之间的关系可以如下表示[1]: 当类是public 继承的时候,它们之间是is-a 关系. 当类是private 继承的时候,它们之间是is-implemented-in-terms-of 关系 当类是耦合关系时,它们之间是has-a 或者 is-implement...

2016-05-07 12:46:30

阅读数 215

评论数 0

swap 函数的编写

swap 函数用来交换两个变量的值,C++ 标准库提供了这个函数。前面的博客也有提到 copy and swap 技术,可以处理自我交换的情况。 那一个典型的实现就是这样的:template<typename T> void swap(T& a, T& b) { ...

2016-05-07 12:24:30

阅读数 657

评论数 0

以对象的形式管理资源

题目来自[1]条款13:以对象管理资源。 因为太贴切了,所以直接用了。 首先说一下资源。 所有资源就是,一旦用了它,将来必须还给系统。[1] 而资源一般是[1]: 内存 文件描述器(file decriptors) 互斥锁 (mutex locks) 图形界面中的字型和笔刷 数...

2016-05-07 11:20:45

阅读数 570

评论数 0

正确地复制对象--oeprator=与copy构造函数

额,这个名字有点怪怪的=_=ok,下面进入正题,为了演示方便,代码只写出简略的部分。copy构造函数class Base { public: Base() {} Base(const Base& ) { cout<<"Base...

2016-05-06 16:16:51

阅读数 391

评论数 0

谈谈virtual函数

virtual , 写C++ 的都不会陌生吧,用于类的成员函数,用以表现对象多态的性质。为多态基类声明virtual 函数以前看书时,得到一条“黄金定律”(这是错误的): 永远应该以virtual 声明类的析构函数 如果不这么做,那么当类成为基类时,在回收对象内存,会发生不正确的行为,导致内存...

2016-05-06 14:18:38

阅读数 1236

评论数 2

Empty Class(空类)的作用

假如有一个这样的类,没有数据成员和操作(除了本身默认存在的构造函数、复制构造函数、析构函数、copy assignment函数),那么,它能做什么?class Empty { };一开始我也是以为这样的空类能够有什么作用呢,直到我看了[1],才感叹自己如此肤浅(所以也建议你去看:)先假设我们有个很...

2016-05-05 17:01:03

阅读数 4453

评论数 0

const 成员函数重载

先看一段引用[1]: 许多人漠视一件事实:两个成员函数如果只是常量性(constess)不同,可以被重载 ok,下面为了解释,定义一下下面这个类:class Cstring { private: char str[32]; public: Cstring(cha...

2016-05-05 15:56:48

阅读数 447

评论数 0

N 个骰子的点数

直接参考原著: 程序员面试题精选100题(43)-n个骰子的点数[算法] 循环的解法比较巧妙,mark一下。

2016-03-16 14:54:59

阅读数 186

评论数 0

[转]值得推荐的C/C++框架和库

找资料的时候看到一篇好博客,这里记录一下先:值得推荐的C/C++框架和库

2016-03-09 09:06:50

阅读数 366

评论数 0

c++ 关键字: volatile

volatile 和 const 是一对关键字。 volatile 表示不让编译器进行优化,每次读取变量的值时,都要重新从内存中读一次。 比如有代码://有全局变量int i i = 0; i = 1; i = 2; i = 3;编译器会认为:i = 3;从而只优化为1条指令。 但假如我正在...

2016-02-04 23:19:48

阅读数 192

评论数 0

c++ 关键字: explicit

explicit 这个关键字用于修饰类的构造函数,防止类进行隐式转换。关于这个关键字有两点: 只能用于修饰类的构造函数 一般用于类的单参数构造函数 看一段示例代码:#include<iostream> using namespace std;class A { int...

2016-02-04 23:13:48

阅读数 153

评论数 0

c++ 特性: 右值引用与移动语义

c++11中引入了右值引用。左值与右值先区分左值与右值,这里参考c++ 右值引用中对左值和右值区分方法: 左值和右值都是针对表达式,左值是指表达式结束后依然存在的持久对象,右值是指表达式结束时就不再存在的临时对象。 一个区分左值和右值的简便方法是:看能不能对表达式进行取地址。如果能,则为左值;...

2016-02-04 14:19:37

阅读数 247

评论数 0

c++特性:decltype

主要参考:c++11新特性–decltype返回值 decltype(表达式) [返回值的类型是表达式参数的类型]看一些例子:template <class U, class V> void Somefunction(U u, V v) { result = u*v;//no...

2016-02-04 12:40:15

阅读数 151

评论数 0

c++ 关键字:const

由于总是忘记了搞混const 的用法,所以自己写个文章,方便以后自己查阅。 *== 表示等同于const int* == int const *指向常量的指针int u=1; const int* p = &u;//p可改变,*p 不可改变int* const指针常量int u=1; i...

2016-02-04 12:35:49

阅读数 171

评论数 0

c++特性:Lambda表达式

本文主要参考: C++的lambda表达式 遇见C++ Lambda - Allen Lee - 博客园Lambda表达式的基本语法,主要参考Lambda Expression Syntax: lambda-introducer(捕获字段) lambda-parameter-declarati...

2016-02-03 23:19:40

阅读数 217

评论数 0

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