上一页 1 ··· 5 6 7 8 9 10 11 12 13 14 下一页

2013年1月30日

以boost::function和boost:bind取代虚函数

摘要: http://blog.csdn.net/Solstice/article/details/3066268这是一篇比较情绪化的blog,中心思想是“继承就像一条贼船,上去就下不来了”,而借助boost::function和boost::bind,大多数情况下,你都不用上贼船。boost::function和boost::bind已经纳入了std::tr1,这或许是C++0x最值得期待的功能,它将彻底改变C++库的设计方式,以及应用程序的编写方式。Scott Meyers的Effective C++ 3rd ed.第35条款提到了以boost::function和boost:bind取代虚函数的 阅读全文

posted @ 2013-01-30 16:29 androidme 阅读(187) 评论(0) 推荐(0) 编辑

2013年1月24日

OpenWrt

摘要: https://openwrt.org/http://www.openwrt.org.cn/ 阅读全文

posted @ 2013-01-24 12:41 androidme 阅读(180) 评论(0) 推荐(0) 编辑

2013年1月23日

C++临时对象

摘要: http://blog.sina.com.cn/s/blog_7b3dad5b0100trnf.htmlhttp://www.cnblogs.com/liyiwen/archive/2009/12/02/1615711.htmlhttp://www.cnblogs.com/liyiwen/archive/2009/12/03/1616627.htmlhttp://www.programlife.net/cpp-return-value-optimization.html 阅读全文

posted @ 2013-01-23 14:10 androidme 阅读(117) 评论(0) 推荐(0) 编辑

2013年1月22日

++iter的效率比iter++的效率高

摘要: for(iterator it = begin(); it != end(); ++it)for(iterator it = begin(); it != end(); it++)两种方式iterator遍历的次数是相同的,但在STL中效率不同,前++--返回引用,后++--返回一个临时对象,因为iterator是类模板,使用it++这种形式要返回一个无用的临时对象,而it++是函数重载,所以编译器无法对其进行优化,所以每遍历一个元素,你就创建并销毁了一个无用的临时对象。不信的话你可以去看看C++的标准库,还有符合标准C++的教材,除了特殊需要和对内置类型外,基本都是使用++it来进行元素遍历 阅读全文

posted @ 2013-01-22 16:45 androidme 阅读(256) 评论(0) 推荐(0) 编辑

static constructors in C++? need to initialize private static objects

摘要: http://stackoverflow.com/questions/1197106/static-constructors-in-c-need-to-initialize-private-static-objectsclass MyClass{ public: static vector<char> a; static class _init { public: _init() { for(char i='a'; i<='z'; i++) a.push_back(i); } } _initi... 阅读全文

posted @ 2013-01-22 16:18 androidme 阅读(183) 评论(0) 推荐(0) 编辑

Best way to get the index of an iterator

摘要: http://stackoverflow.com/questions/2152986/best-way-to-get-the-index-of-an-iteratorit - vec.begin()std::distance(vec.begin(), it)it - vec.begin() takes constant time, but the operator - is only defined on random access iterators, so the code won't compile at all with list iterators, for example. 阅读全文

posted @ 2013-01-22 16:15 androidme 阅读(143) 评论(0) 推荐(0) 编辑

2013年1月19日

[C++]前置声明和头文件

摘要: 看完《Effective C++》条款31有感。。假设有一个Date类Date.h[cpp] view plaincopyclassDate{private:intyear,month,day;};如果有个Task类的定义要用到Date类,有两种写法其一Task1.h[cpp] view plaincopyclassDate;classTask1{public:DategetData();};其二Task2.h[cpp] view plaincopy#include"Date.h"classTask2{public:DategetData();};一个采用前置声明,一个采用 阅读全文

posted @ 2013-01-19 15:13 androidme 阅读(217) 评论(0) 推荐(0) 编辑

谈谈C++继承中的重载,覆盖和隐藏

摘要: 写正题之前,先给出几个关键字的中英文对照,重载(overload),覆盖(override),隐藏(hide)。在早期的C++书籍中,可能 翻译的人不熟悉专业用语(也不能怪他们,他们不是搞计算机编程的,他们是英语专业的),常常把重载(overload)和覆盖(override)搞错! 我们先来看一些代码及其编译结果。 实例一: #include "stdafx.h" #include <iostream.h> class CB { public: void f(int) { cout << "CB::f(int)" << 阅读全文

posted @ 2013-01-19 13:07 androidme 阅读(162) 评论(0) 推荐(0) 编辑

2013年1月18日

C++中dynamic_cast,static_cast,const_cast,reinterpret_cast

摘要: dynamic_casthttp://baike.baidu.com/view/1745213.htmstatic_casthttp://baike.baidu.com/view/1745207.htmconst_casthttp://baike.baidu.com/view/1745221.htmreinterpret_casthttp://baike.baidu.com/view/1263731.htm 阅读全文

posted @ 2013-01-18 16:17 androidme 阅读(155) 评论(0) 推荐(0) 编辑

2013年1月16日

STL map与Boost unordered_map

摘要: 今天看到boost::unordered_map, 它与 stl::map的区别就是,stl::map是按照operator<比较判断元素是否相同,以及比较元素的大小,然后选择合适的位置插入到树 中。所以,如果对map进行遍历(中序遍历)的话,输出的结果是有序的。顺序就是按照operator< 定义的大小排序。而boost::unordered_map是计算元素的Hash值,根据Hash值判断元素是否相同。所以,对unordered_map进行遍历,结果是无序的。用法的区别就是,stl::map 的key需要定义operator< 。 而boost::unordered_ma 阅读全文

posted @ 2013-01-16 21:21 androidme 阅读(210) 评论(0) 推荐(0) 编辑

static_cast, dynamic_cast, reinterpret_cast, const_cast区别比较

摘要: http://www.cnblogs.com/jerry19880126/archive/2012/08/14/2638192.html隐式转换(implicit conversion)short a=2000;int b;b=a;short是两字节,int是四字节,由short型转成int型是宽化转换(bit位数增多),编译器没有warning,如下图所示。宽化转换 (如char到int,int到long long,int到float,float到double,int到double等)构成隐式转换,编译器允许直接转换。但若反过来double a=2000;short b;b=a;此时,是从8 阅读全文

posted @ 2013-01-16 21:19 androidme 阅读(2005) 评论(0) 推荐(0) 编辑

const修饰指针和引用的用法

摘要: const修饰指针和引用的用法,对于初学C++的人直是讳莫如深,不知所云. 一旦你了解了其用法,一切便不值一哂了.下面我为读者一一释疑: 大致说来其可分为三种情况: const修饰指针,const修饰引用,const修饰指针的引用.1.const修饰指针const修饰指针又可分为三种情况:a.const修饰指针本身b.const修饰指针所指的变量(或对象)c.const修饰指针本身和指针所指的变量(或对象)(1).const修饰指针本身这种情形下,指针本身为常量,不可改变,任何修改指针本身的行为都是非法的.例如:const int a = 1;const int b = 2;int i = 3 阅读全文

posted @ 2013-01-16 21:18 androidme 阅读(864) 评论(0) 推荐(0) 编辑

2013年1月15日

C++ using关键字作用总结

摘要: 1.在当前文件中引入命名空间这是我们最熟悉的用法,例如:using namespace std;2.在子类中使用 using 声明引入基类成员名称(参见C++ primer)在private或者protected继承时,基类成员的访问级别在派生类中更受限:class Base {public:std::size_t size() const {return n; }protected:std::size_t n;};class Derived : private Base { . . . };在这一继承层次中,成员函数 size 在 Base 中为 public,但在 Derived中为 pr 阅读全文

posted @ 2013-01-15 21:16 androidme 阅读(445) 评论(0) 推荐(0) 编辑

C++继承:公有,私有,保护

摘要: 公有继承(public)、私有继承(private)、保护继承(protected)是常用的三种继承方式。1. 公有继承(public)公有继承的特点是基类的公有成员和保护成员作为派生类的成员时,它们都保持原有的状态,而基类的私有成员仍然是私有的,不能被这个派生类的子类所访问。2. 私有继承(private)私有继承的特点是基类的公有成员和保护成员都作为派生类的私有成员,并且不能被这个派生类的子类所访问。3. 保护继承(protected)保护继承的特点是基类的所有公有成员和保护成员都成为派生类的保护成员,并且只能被它的派生类成员函数或友元访问,基类的私有成员仍然是私有的。下面列出三种不同的继 阅读全文

posted @ 2013-01-15 21:15 androidme 阅读(173) 评论(0) 推荐(0) 编辑

STL中的Concept和Boost库的Concept_Check

摘要: 在Generic Programming当中,一个重要的概念就是Concept(滑稽的是,如果把这个Concept也翻译成“概念”,那就狗屁不通了。我倾向于说它是 “操作集”)。Concept就是一组操作,如果一个type具有这些操作,那么就说这个type是这个Concept的一个model。这其中的思想有那么一丁点像是OO当中的interface,一个class如果实现了一个interface,那么它就可以被当作这个interface来用。同样,如果一个type是一个Concept的model,那么所有接受这个Concept的操作也就可以接受这个type。例如,在STL中,stable_so 阅读全文

posted @ 2013-01-15 21:14 androidme 阅读(798) 评论(0) 推荐(0) 编辑

explicit构造函数

摘要: 按照默认规定,只有一个参数的构造函数也定义了一个隐式转换,将该构造函数对应数据类型的数据转换为该类对象,如下面所示:class String {String ( const char* p );// 用C风格的字符串p作为初始化值//…}String s1 = “hello”;//OK 隐式转换,等价于String s1 = String(“hello”);但是有的时候可能会不需要这种隐式转换,如下:class String { String ( int n );//本意是预先分配n个字节给字符串String ( const char* p );// 用C风格的字符串p作为初始化值//…}下面 阅读全文

posted @ 2013-01-15 09:45 androidme 阅读(164) 评论(0) 推荐(0) 编辑

2013年1月14日

typedef和typename关键字

摘要: 1、类型说明typedef类型说明的格式为:typedef 类型 定义名; 类型说明只定义了一个数据类型的新名字而不是定义一种新的数据类型。定义名表示这个类型的新名字。例如: 用下面语句定义整型数的新名字:typedef int SIGNED_INT;使用说明后, SIGNED_INT就成为int的同义词了, 此时可以用SIGNED_INT 定义整型变量。例如: SIGNED_INT i, j;(与int i, j等效)。但 long SIGNED_INT i, j; 是非法的。typedef同样可用来说明结构、联合以及枚举和类。说明一个结构的格式为: typedef struct { 数.. 阅读全文

posted @ 2013-01-14 14:13 androidme 阅读(260) 评论(0) 推荐(0) 编辑

2013年1月9日

使用NoSquint插件修改火狐中网页背景色

摘要: 安装NoSquint插件。在地址栏输入about:config然后在过滤器里搜索: extensions.nosquint.colorBackground选中右击→修改填入自己喜欢的颜色代码即可,眼睛保护色:#CCE8CF 阅读全文

posted @ 2013-01-09 11:27 androidme 阅读(337) 评论(0) 推荐(0) 编辑

2013年1月8日

Doxygen - Generate documentation from source code

摘要: http://www.stack.nl/~dimitri/doxygen/Doxygen is a documentation system for C++, C, Java, Objective-C, Python, IDL (Corba and Microsoft flavors), Fortran, VHDL, PHP, C#, and to some extent D.It can help you in three ways:It can generate an on-line documentation browser (in HTML) and/or an off-line re 阅读全文

posted @ 2013-01-08 09:19 androidme 阅读(243) 评论(0) 推荐(0) 编辑

2013年1月6日

Jam - an open-source build system

摘要: http://www.perforce.com/documentation/jamhttp://en.wikipedia.org/wiki/Perforce_Jamhttp://www.freetype.org/jam/index.html 阅读全文

posted @ 2013-01-06 12:46 androidme 阅读(225) 评论(0) 推荐(0) 编辑

上一页 1 ··· 5 6 7 8 9 10 11 12 13 14 下一页

导航